[.NET クラスライブラリ Tips][LINQ] 複数のキーを指定してソートする(ThenByメソッド)

スポンサーリンク

概要

LINQのThenBy メソッドはメソッドは、複数のキーを指定してソートする際に使用します。

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

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

構文

ThenBy メソッドは、OrderBy、OrderByDescending、ThenBy、または ThenByDescending メソッドに続けて呼び出す必要があります。

以下に、ThenBy メソッドの構文を示します。

public static System.Linq.IOrderedEnumerable ThenBy<TSource, TKey> (
    this System.Linq.IOrderedEnumerable source, 
    Func<TSource,TKey> keySelector);

引数:

source : System.Linq.IOrderedEnumerable型。 ソートされたシーケンス。
keySelector : Func<TSource,TKey>型。 キー値の取得に使用される関数。

戻り値:

System.Linq.IOrderedEnumerable型。 フィールド、プロパティまたは式が指定された、ascending 順で二次並べ替えられたソース シーケンス。

使用例

以下の例では、整数のリストを昇順に並べ替え、その後、文字列の長さを基準に、長さが同じ場合にはアルファベット順で並べ替えます。

List numbers = new List { 3, 5, 2, 8, 4, 1 };
List words = new List { "apple", "cherry", "banana", "blueberry", "pear", "avocado" };

var result = words.OrderBy(w => w.Length)
                  .ThenBy(w => w);

foreach (var item in result)
{
    Console.WriteLine(item);
}

このコードでは、OrderBy メソッドで文字列の長さで昇順に並べ替えを行い、その後 ThenBy メソッドでアルファベット順に並べ替えを行っています。結果として、以下のような出力が得られます。

avocado
pear
apple
banana
cherry
blueberry

この例では、最初に文字列の長さで昇順に並べ替えを行っているため、文字列の長さが同じ場合にはアルファベット順で並べ替えられます。最終的に得られるリストは、長さが短い順に、同じ長さの場合はアルファベット順でソートされています。

.NET クラス Tips 一覧

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

Please follow and like us:

コメント

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