比較のために、先の例をラムダ式を使ったものに書き換えると次のようになります。 OrderByメソッドで指定しているラムダ式は、上記の例におけるKeySelectorメソッドと同じ動作をします。 ラムダ式を使用すると、キーを選択するコードを個別のメソッドとして記述する必要がなくなるため、よりシンプルに記述できます。
OrderByメソッドを使ってDictionaryをソートする(ラムダ式版)
using System;
using System.Collections.Generic;
using System.Linq;
class Sample {
static void Main()
{
// ソート対象のDictionary<string, int>
var dict = new Dictionary<string, int>();
dict.Add("Bob", 3);
dict.Add("Dave", 1);
dict.Add("Alice", 2);
dict.Add("Charlie", 5);
dict.Add("Eve", 4);
// ソート
IOrderedEnumerable<KeyValuePair<string, int>> sorted = dict.OrderBy(pair => pair.Key);
foreach (var pair in sorted) {
Console.WriteLine("{0} {1}", pair.Key, pair.Value);
}
}
}
Dictionaryを値にしたがってソートしたい場合は、キー選択のラムダ式を次のように変更します。
OrderByメソッドの代わりにOrderByDescendingメソッドを使うと、昇順ではなく降順でソートすることができます。