DictionaryでLINQを使ってみる
サンプルから学んでいきましょう
Whereメソッド
var dictionary = new Dictionary<string, int>()
{
{"apple", 1},
{"banana", 2},
{"orange", 3},
{"grape", 4}
};
var filteredDictionary = dictionary.Where(x => x.Value > 2);
foreach (var item in filteredDictionary)
{
Console.WriteLine(item.Key + ": " + item.Value);
}
ここでは、dictionary
という名前のDictionaryを作成し、その中にいくつかのキーと値のペアを追加しました。その後、Whereメソッドを使用して、値が2より大きい要素だけを取り出し、filteredDictionary
という名前の新しいDictionaryに格納しました。最後に、foreach文を使用して、新しいDictionaryの内容を表示します。 実行すると、次のようになります
実行結果
orange: 3
grape: 4
Selectメソッド
var dictionary = new Dictionary<string, int>()
{
{"apple", 1},
{"banana", 2},
{"orange", 3},
{"grape", 4}
};
var selectedDictionary = dictionary.Select(x => new { x.Key, Value = x.Value * 2 });
foreach (var item in selectedDictionary)
{
Console.WriteLine(item.Key + ": " + item.Value);
}
ここでは、dictionary
という名前のDictionaryを作成し、その中にいくつかのキーと値のペアを追加しました。その後、Selectメソッドを使用して、値を2倍にする新しい要素を作成し、selectedDictionary
という名前の新しいDictionaryに格納しました。最後に、foreach文を使用して、新しいDictionaryの内容を表示します。
実行結果
apple: 2
banana: 4
orange: 6
grape: 8
一つだけ注意が必要な点があります。 それはSelect
メソッドは、IEnumerable<T>を返すため、新しいDictionaryを作ることはできません。 Dictionary<string,int>は、IEnumerable<KeyValuePair<string,int>>を返すため、項目のインデックスアクセスができないため、新しいDictionaryを作ることができません。
新しいDictionaryを作りたい場合、自分で新しいDictionaryを作成し、そこに要素を追加することを検討することができます。 また、ToDictionaryメソッドを使うことで、IEnumerable<T>からDictionary<TKey,TValue>に変換できます。
var newDictionary = selectedDictionary.ToDictionary(x => x.Key, x => x.Value);
ディスカッション
コメント一覧
まだ、コメントがありません