2016-04-11 15 views
14

私は動作するコードを書いたが、同じインデックスを持っている場合は、リストを結合するためのより良い方法を見つけることができないようだ。LINQで有効な方法は、インデックスに基づいて参加

class Apple {}; 
    class Carrot {}; 

    var apples = new list<Apple>(); 
    var carrot = new list<Carrot>(); 

    var combine = from a in apples 
        from c in carrots 
        where apples.IndexOf(a) == carrots.IndexOf(c) 
        select new {a, c}; 

(私がコンバイン言うとき、私はリストの最後に追加意味するものではありません{{A、B}、{A、B}、... {}}:。たぶん私は持っています。あまりにも動作するはずです

var combine = apples.Zip(carrots, (a, c) => new { Apple = a, Carrot = c}); 

答えて

19

あなたがEnumerable.Zipを使用することができます。

+1

ここで、apples.IndexOf(a)== carrots.IndexOf(c) - 条件がありません –

+7

いいえ、演算子はインデックスに従ってペアを取得したいだけです。 Zipは自動的にそれを行います –

2
apples.Select((a,i)=> new { Apple = a, Carrot = carrots[i] }); 

:用語間違って研究しようとして)

+3

リンゴの配列がニンジンの配列より多くの要素を持っている場合、これはスローされます。 – Fabjan

関連する問題