英語で読む

次の方法で共有


Enumerable.OrderByDescending メソッド

定義

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

オーバーロード

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

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

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

指定された比較子を使用してシーケンスの要素を降順に並べ替えます。

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

ソース:
OrderBy.cs
ソース:
OrderBy.cs
ソース:
OrderBy.cs

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

C#
public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);

型パラメーター

TSource

source の要素の型。

TKey

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

パラメーター

source
IEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

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

戻り値

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

例外

source または keySelectornull です。

注釈

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

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

このメソッドの例については、OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) に関するページを参照してください。

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

注意

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

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

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

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

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

ソース:
OrderBy.cs
ソース:
OrderBy.cs
ソース:
OrderBy.cs

指定された比較子を使用してシーケンスの要素を降順に並べ替えます。

C#
public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
C#
public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);

型パラメーター

TSource

source の要素の型。

TKey

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

パラメーター

source
IEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

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

comparer
IComparer<TKey>

キーを比較する IComparer<T>

戻り値

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

例外

source または keySelectornull です。

次のコード例では、 を使用 OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) して、変換関数とカスタム比較子を使用してシーケンスの要素を降順に並べ替える方法を示します。

C#
/// <summary>
/// This IComparer class sorts by the fractional part of the decimal number.
/// </summary>
public class SpecialComparer : IComparer<decimal>
{
    /// <summary>
    /// Compare two decimal numbers by their fractional parts.
    /// </summary>
    /// <param name="d1">The first decimal to compare.</param>
    /// <param name="d2">The second decimal to compare.</param>
    /// <returns>1 if the first decimal's fractional part
    /// is greater than the second decimal's fractional part,
    /// -1 if the first decimal's fractional
    /// part is less than the second decimal's fractional part,
    /// or the result of calling Decimal.Compare()
    /// if the fractional parts are equal.</returns>
    public int Compare(decimal d1, decimal d2)
    {
        decimal fractional1, fractional2;

        // Get the fractional part of the first number.
        try
        {
            fractional1 = decimal.Remainder(d1, decimal.Floor(d1));
        }
        catch (DivideByZeroException)
        {
            fractional1 = d1;
        }
        // Get the fractional part of the second number.
        try
        {
            fractional2 = decimal.Remainder(d2, decimal.Floor(d2));
        }
        catch (DivideByZeroException)
        {
            fractional2 = d2;
        }

        if (fractional1 == fractional2)
            return Decimal.Compare(d1, d2);
        else if (fractional1 > fractional2)
            return 1;
        else
            return -1;
    }
}

public static void OrderByDescendingEx1()
{
    List<decimal> decimals =
        new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };

    IEnumerable<decimal> query =
        decimals.OrderByDescending(num =>
                                       num, new SpecialComparer());

    foreach (decimal num in query)
    {
        Console.WriteLine(num);
    }
}

/*
 This code produces the following output:

 9.7
 0.5
 8.3
 6.3
 1.3
 6.2
*/

注釈

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

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

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

注意

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

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

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

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0