比較のために、先の例をラムダ式を使ったものに書き換えると次のようになります。 OrderByメソッドで指定しているラムダ式は、上記の例におけるKeySelectorメソッドと同じ動作をします。 ラムダ式を使用すると、キーを選択するコードを個別のメソッドとして記述する必要がなくなるため、よりシンプルに記述できます。
OrderByメソッドを使ってDictionaryをソートする(ラムダ式版)
Imports System
Imports System.Collections.Generic
Imports System.Linq
Class Sample
Shared Sub Main()
' ソート対象のDictionary
Dim dict As New Dictionary(Of String, Integer)()
dict.Add("Bob", 3)
dict.Add("Dave", 1)
dict.Add("Alice", 2)
dict.Add("Charlie", 5)
dict.Add("Eve", 4)
' ソート
Dim sorted As IOrderedEnumerable(Of KeyValuePair(Of String, Integer)) = _
dict.OrderBy(Function(pair) pair.Key)
For Each pair As KeyValuePair(Of String, Integer) In sorted
Console.WriteLine("{0} {1}", pair.Key, pair.Value)
Next
End Sub
End Class
Dictionaryを値にしたがってソートしたい場合は、キー選択のラムダ式を次のように変更します。
OrderByメソッドの代わりにOrderByDescendingメソッドを使うと、昇順ではなく降順でソートすることができます。