id:neueccさんが、もう1つやり方を教えてくれました。自分では思いつきませんでしたが、以下のコードになります。
var array = new[] { "1", "one", "2", "two" }; var dict = array .Zip(array.Skip(1), Tuple.Create) .Where((_, i) => i % 2 == 0) .ToDictionary( v => v.Item1, v => v.Item2);
1つ要素をずらした自分自身と結合して絞り込んでDictionaryへ変換・・・。という感じです。なるほど!!
ちょっと様子を追ってみると・・・Zipメソッドの所で以下のようなTupleが作られます。
Item1 | Item2 |
1 | one |
one | 2 |
2 | two |
奇数行は、不要なデータなのでWhereで絞り込みます。
Item1 | Item2 |
1 | one |
2 | two |
あとはItem1をキーに、Item2を値にしたDictionaryに変換って寸法です。頭やわらかくしないとだな〜。関数脳になりたい。