基于索引的LINQ加入的有效方法

时间:2016-04-11 15:34:38

标签: c# 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},.... {}}:也许我的术语错了试图研究。)

2 个答案:

答案 0 :(得分:19)

您可以使用Enumerable.Zip

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

答案 1 :(得分:2)

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

这也应该有用。