我有2個序列:LINQ:突出的兩個序列第三結果序列
l1 = { "a1", "a2"}
l2 = { "b1", "b2"}
我想回到第三序列:
l3 = { new A {a = "a1", b = "b1"}, new A {a = "a2", b = "b2"}}}
我如何使用LINQ這樣做呢?
我有2個序列:LINQ:突出的兩個序列第三結果序列
l1 = { "a1", "a2"}
l2 = { "b1", "b2"}
我想回到第三序列:
l3 = { new A {a = "a1", b = "b1"}, new A {a = "a2", b = "b2"}}}
我如何使用LINQ這樣做呢?
您正在尋找函數式編程的zip操作,它從兩個序列中獲取相應的元素,並構建包含匹配對的第三個序列。在C#中,這是使用Enumerable.Zip實現的。你可以得到你正在尋找
Enumerable.Zip(l1, l2, (elem1, elem2) => new A {a = elem1, b = elem2});
您正在尋找Zip
API
var l3 = l1.Zip(l2, (left, right) => new A { a = left, b = right });
注意具體的結果:這是未添加到.NET Framework 4.0爲止。編碼3.5版本相當容易,不過如果這是你正在使用的。
這實際上很容易編碼,但如果你很懶,我把源代碼放在這裏:http://blogs.msdn.com/b/ericlippert/archive/2009/05/07/zip-me -up.aspx – 2012-03-14 23:21:38
假設你有一個A級和兩個序列在同一順序的相同數量的元素:
var l1 = new [] { "a1", "a2"};
var l2 = new [] { "b1", "b2"};
var l3 = l1.Zip(l2, (x,y) => new { A { a = x, b = y });
你有什麼可以顯示或只是希望我們編寫的代碼? – 2012-03-14 22:39:49