かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

stringの配列からDictionaryへの変換

{"key", "value", "key", "value", "key", "value"}という感じで値の格納されたstringの配列からDictionaryに変換するというお題。自分の頭では、これが限界でした。何か気持ち悪い・・・。

var arr = new[] {"1", "one", "2", "two"};
var dict = arr.Aggregate(
	new { Dict = new Dictionary<string, string>(), Prev = default(string) },
	(s, v) =>
	{
		if (s.Prev == null)
		{
			return new { s.d, Prev = v };
		}
		s.Dict.Add(s.Prev, v);
		return new { s.Dict, Prev = default(string) };
	}).Dict;