もう1つ思いついた。気になるのはGroupByの後の要素の順番って保障されるのかな・・・。
var array = new[] { "1", "one", "2", "two" }; var dict = array.Select((v, i) => new { Index = i, Value = v }) .GroupBy(i => i.Index / 2) .ToDictionary( v => v.First().Value, v => v.Last().Value); // v => v.ElementAt(0).Value, // v => v.ElementAt(1).Value);