LinqでDictionaryを作る方法
DictionaryデータをLinqを使って短い行数で作る方法をまとめてみる。
最初に思いつく下記の方法では、作れないことを覚えておこう。よく間違うので。
正解は、ToDictinaryメソッドを使う。
すると、ちゃんとDictionaryオブジェクトができている。
しかし、Linqメソッドのヘルプに書いてあるシンタックスのわかりにくさは、なんとか簡単にできないものなのかしら。呪文のようで理解しようとする気を失わせる。
ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
簡略化して、こんな感じで覚えておけばよいかも。
ToDictionary(TSource => TKey, TSource => TElement)
最初に思いつく下記の方法では、作れないことを覚えておこう。よく間違うので。
/// A,B,CをキーとするDictionaryを作りたい List<string> lst = new List<string>() { "A", "B", "C" }; var di = lst.Select(s => new KeyValuePair<string, int>(s, 10));
正解は、ToDictinaryメソッドを使う。
var di2 = lst.ToDictionary(s => s, s => 10);
すると、ちゃんとDictionaryオブジェクトができている。
しかし、Linqメソッドのヘルプに書いてあるシンタックスのわかりにくさは、なんとか簡単にできないものなのかしら。呪文のようで理解しようとする気を失わせる。
書き方がわかれば、表示されている通りなのだけど。
簡略化して、こんな感じで覚えておけばよいかも。
ToDictionary(TSource => TKey, TSource => TElement)
コメント
コメントを投稿