Привет всем!
Есть две последовательности одинаковой длины. Как для них построить соединение, которое бы соотносило элементы с одинаковыми индексами?
То есть на входе { 1, 2, 3 }, { "ein", "zwei", "drei" }. А на выходе { { 1, "ein" }, { 2, "zwei" }, { 3, "drei" } }.
Интересует человеческий вариант на LINQ-операторах, а не это убожество, приведенное ниже.
var digits = new[] { 1, 2, 3 };
var german = new[] { "ein", "zwei", "drei" };
var q = digits.Select( ( digit, index ) => new { Value = digit, Index = index } )
.Join( german.Select( ( phrase, index ) => new { Value = phrase, Index = index } ),
_ => _.Index, _ => _.Index, // Вот это очень плохо читается; с первого взгляда не очевидно, что именно тут индексы на равенство и сравниваются.
( digit, phrase ) => new { Digit = digit.Value, Phrase = phrase.Value }
);
foreach ( var translation in q )
Console.WriteLine( "'{0}' stands for {1}", translation.Phrase, translation.Digit );
Спасибо.