[.NET クラスライブラリ Tips][LINQ] 指定したキーで昇順にソートし、その後に指定したキーで降順にソートする(ThenByDecendingメソッド)

スポンサーリンク

概要

ThenByDecendingメソッドは、LINQの並び替えを行うメソッドの一つで、指定したキーで昇順にソートし、その後に指定したキーで降順にソートします。つまり、先に指定したキーで昇順にソートした結果をさらに指定したキーで降順にソートすることができます。

この記事ではThenByDecendingの使用方法を説明します。

公式サイト情報はコチラを参照してください。

構文

var query = collection.OrderBy(item => item.Key1)
                      .ThenByDescending(item => item.Key2);

ThenByDecendingメソッドは、「OrderBy」「OrderByDescending」「ThenBy」メソッドと同様に、並び替えを行うメソッドです。これらのメソッドは、引数として並び替えに使用するキーを指定します。そして、OrderByメソッドは、先に指定したキーで昇順にソートした結果をさらに指定したキーで降順にソートすることができます。引数には、並び替えに使用するキーを指定するラムダ式を渡します。

使用例

using System;
using System.Linq;
class Program
{
    static void Main()
    {
        var persons = new[] {
        new { Name = "Alice", Age = 25 },
        new { Name = "Bob", Age = 20 },
        new { Name = "Charlie", Age = 30 },
        new { Name = "David", Age = 20 },
        new { Name = "Eve", Age = 25 },
    };
    var query = persons.OrderBy(p => p.Age)
                       .ThenByDescending(p => p.Name);

    foreach (var person in query)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}

上記の例では、5人のPersonオブジェクトを、まずは年齢で昇順にソートし、その後に名前で降順にソートしています。つまり、同じ年齢の場合は名前の逆順で並び替えられます。実行結果は以下のようになります。

Name: Bob, Age: 20
Name: David, Age: 20
Name: Alice, Age: 25
Name: Eve, Age: 25
Name: Charlie, Age: 30

.NET クラス Tips 一覧

これまでに紹介した .NET Tips 一覧はこちら

Please follow and like us:

コメント

タイトルとURLをコピーしました