2012-03-14 43 views
0

我有2個序列:LINQ:突出的兩個序列第三結果序列

l1 = { "a1", "a2"} 

l2 = { "b1", "b2"} 

我想回到第三序列:

l3 = { new A {a = "a1", b = "b1"}, new A {a = "a2", b = "b2"}}} 

我如何使用LINQ這樣做呢?

+0

你有什麼可以顯示或只是希望我們編寫的代碼? – 2012-03-14 22:39:49

回答

3

您正在尋找函數式編程的zip操作,它從兩個序列中獲取相應的元素,並構建包含匹配對的第三個序列。在C#中,這是使用Enumerable.Zip實現的。你可以得到你正在尋找

Enumerable.Zip(l1, l2, (elem1, elem2) => new A {a = elem1, b = elem2}); 
4

您正在尋找Zip API

var l3 = l1.Zip(l2, (left, right) => new A { a = left, b = right }); 

注意具體的結果:這是未添加到.NET Framework 4.0爲止。編碼3.5版本相當容易,不過如果這是你正在使用的。

+2

這實際上很容易編碼,但如果你很懶,我把源代碼放在這裏:http://blogs.msdn.com/b/ericlippert/archive/2009/05/07/zip-me -up.aspx – 2012-03-14 23:21:38

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 });