Enumerable.OrderBy メソッド

定義

シーケンスの要素を昇順で並べ替えます。

オーバーロード

名前 説明
OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

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

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

指定した比較子を使用して、シーケンスの要素を昇順で並べ替えます。

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

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

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ OrderBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member OrderBy : seq<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function OrderBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)

型パラメーター

TSource

sourceの要素の型。

TKey

keySelectorによって返されるキーの型。

パラメーター

source
IEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

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

返品

キーに従って要素が並べ替えられる IOrderedEnumerable<TElement>

例外

source または keySelectornull

次のコード例では、 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
*/
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Sub OrderByEx1()
    ' Create an array of Pet objects.
    Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8},
                     New Pet With {.Name = "Boots", .Age = 4},
                     New Pet With {.Name = "Whiskers", .Age = 1}}

    ' Order the Pet objects by their Age property.
    Dim query As IEnumerable(Of Pet) =
    pets.OrderBy(Function(pet) pet.Age)

    Dim output As New System.Text.StringBuilder
    For Each pt As Pet In query
        output.AppendLine(pt.Name & " - " & pt.Age)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString())
End Sub

' This code produces the following output:
'
' Whiskers - 1
' Boots - 4
' Barley - 8

注釈

このメソッドは、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納するオブジェクトです。 このメソッドで表されるクエリは、GetEnumerator メソッドを直接呼び出すか、C# で foreach を使用するか、Visual Basic で For Each を使用して列挙されるまで実行されません。

要素自体の値でシーケンスを並べ替える場合は、keySelector の ID 関数 (C# では x => x、Visual Basic では Function(x) x) を指定します。

このメソッドの戻り値の型である IOrderedEnumerable<TElement>型を拡張するために、2 つのメソッドが定義されています。 これら 2 つのメソッド ( ThenByThenByDescending) を使用すると、シーケンスを並べ替える追加の並べ替え条件を指定できます。 ThenBy ThenByDescendingIOrderedEnumerable<TElement>も返します。これは、ThenByまたはThenByDescendingへの連続する任意の数の呼び出しを実行できることを意味します。

Note

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

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

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

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

こちらもご覧ください

適用対象

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

指定した比較子を使用して、シーケンスの要素を昇順で並べ替えます。

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ OrderBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
static member OrderBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function OrderBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)

型パラメーター

TSource

sourceの要素の型。

TKey

keySelectorによって返されるキーの型。

パラメーター

source
IEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

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

comparer
IComparer<TKey>

キーを比較する IComparer<T>

返品

キーに従って要素が並べ替えられる IOrderedEnumerable<TElement>

例外

source または keySelectornull

注釈

このメソッドは、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納するオブジェクトです。 このメソッドで表されるクエリは、GetEnumerator メソッドを直接呼び出すか、C# で foreach を使用するか、Visual Basic で For Each を使用して列挙されるまで実行されません。

要素自体の値でシーケンスを並べ替える場合は、keySelector の ID 関数 (C# では x => x、Visual Basic では Function(x) x) を指定します。

このメソッドの戻り値の型である IOrderedEnumerable<TElement>型を拡張するために、2 つのメソッドが定義されています。 これら 2 つのメソッド ( ThenByThenByDescending) を使用すると、シーケンスを並べ替える追加の並べ替え条件を指定できます。 ThenBy ThenByDescendingIOrderedEnumerable<TElement>も返します。これは、ThenByまたはThenByDescendingへの連続する任意の数の呼び出しを実行できることを意味します。

Note

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

comparernullの場合は、キーの比較に既定の比較子Defaultが使用されます。

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

こちらもご覧ください

適用対象