OrderBy(TSource, TKey) メソッド (IEnumerable(TSource), Func(TSource, TKey))
目次を折りたたむ
目次を展開する
この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Enumerable.OrderBy<TSource, TKey> メソッド (IEnumerable<TSource>, Func<TSource, TKey>)

 

キーに従って昇順のシーケンスの要素を並べ替えます。

名前空間:   System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector
)

パラメーター

source
Type: System.Collections.Generic.IEnumerable<TSource>

順序付ける値のシーケンス。

keySelector
Type: System.Func<TSource, TKey>

要素からキーを抽出する関数。

戻り値

Type: System.Linq.IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement> 要素がキーに従って並べ替えられています。

型パラメーター

TSource

要素の型 sourceします。

TKey

によって返されるキーの種類 keySelectorします。

Exception Condition
ArgumentNullException

source または keySelectornull です。

このメソッドは遅延実行を使用して実装されます。 すぐに、値は、操作を実行するために必要なすべての情報を格納するオブジェクトを返します。 オブジェクトのいずれかを呼び出すことが列挙されるまで、このメソッドで表されるクエリは実行されません、 GetEnumerator メソッドを使用して直接または foreach で Visual C# または For Each で Visual Basicします。

要素自体の値によって、シーケンスを注文するには、identity 関数を指定 (x => x で Visual C# または Function(x) x で Visual Basic) の keySelectorです。

2 つのメソッドを定義して型を拡張する IOrderedEnumerable<TElement>, 、これは、このメソッドの戻り値の型。 これら 2 つの方法では、つまり ThenByThenByDescending, 、シーケンスを並べ替えるには、追加の並べ替え条件を指定できます。 ThenBy ThenByDescending を返すことも、 IOrderedEnumerable<TElement>, 、任意の数を連続して呼び出すをつまり ThenBy または ThenByDescending 可能であります。

System_CAPS_noteメモ

IOrderedEnumerable<TElement> から継承 IEnumerable<T>, 、呼び出すことができます OrderBy または OrderByDescending への呼び出しの結果に OrderBy, 、OrderByDescending, 、ThenBy または ThenByDescendingです。 これを行うには、新しいプライマリ順序以前確立された順序を無視するが導入されています。

このメソッドは、既定の比較子を使用してキーを比較 Defaultします。

このメソッドは、安定した並べ替えを実行します。つまり、2 つの要素のキーが等しい場合は、要素の順序が保持されます。 これに対し、不安定な並べ替えでは、同じキーを持つ要素の順序は保持されません。

クエリ式の構文で、 orderby (Visual C#) または Order By (Visual Basic) の呼び出しに変換される句 OrderByします。

次のコード例では、使用して OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) シーケンスの要素を並べ替える。

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}

/*
 This code produces the following output:

 Whiskers - 1
 Boots - 4
 Barley - 8
*/

Universal Windows Platform
8 から利用可能
.NET Framework
3.5 から利用可能
Portable Class Library
サポート対象 : portable .NET platforms
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
Windows Phone
8.1 から利用可能
トップに戻る
表示:
© 2016 Microsoft