我有两个序列:
l1 = { "a1", "a2"}
l2 = { "b1", "b2"}
我想返回第三个序列:
l3 = { new A {a = "a1", b = "b1"}, new A {a = "a2", b = "b2"}}}
我如何使用linq这样做?
答案 0 :(得分:4)
您正在寻找Zip
API
var l3 = l1.Zip(l2, (left, right) => new A { a = left, b = right });
注意:直到4.0才将此添加到.Net Framework中。如果你正在使用它,那么编写3.5版本相当容易。
答案 1 :(得分:3)
您正在寻找函数式编程的zip操作,它从两个序列中获取相应的元素,并构建包含匹配对的第三个序列。在C#中,这是使用Enumerable.Zip实现的。您可以使用
获得您要查找的具体结果Enumerable.Zip(l1, l2, (elem1, elem2) => new A {a = elem1, b = elem2});
答案 2 :(得分:1)
假设您有一个A类,并且两个序列具有相同数量的元素:
var l1 = new [] { "a1", "a2"};
var l2 = new [] { "b1", "b2"};
var l3 = l1.Zip(l2, (x,y) => new { A { a = x, b = y });