2011-09-24 184 views
3

我在Silverlight中創建了兩個集合,每個集合都是通過不同的方法在不同的時間創建的。如何將兩個集合合併爲一個

方法1創建一個List <>題爲人(包含字段名,姓氏年齡)

方法2創建的列表<>標題電話(包含電話號碼,手機號碼)

有SL中的一種方式是將這兩個列表合併成一個集合,然後綁定到視圖以供顯示?

例:組合成一個包含所有屬性

+0

這兩個列表之間的關係是什麼,即公共密鑰,順序? –

+0

我有一個objectId被稱爲相關ID。這是棘手的事情是從一個抽象的數據庫,所以沒有直接的關係鏈接在現場級別設置相關。我可以很好的想到數據是1:1,所以當方法1觸發,然後是方法2時,我知道返回的結果是相關的。我只需要將它們合併爲一個集合 – rlcrews

+0

我認爲@ JaredPar的答案應該適用於您。 –

回答

4

您正在尋找的Zip功能集合(姓,名年齡,電話號碼,手機號碼)。它允許您通過結合eache的元素將2個集合合併爲一個集合。

List<Type1> col1 = ...; 
List<Type2> col2 = ...; 
var combined = col1.Zip(col2, (x, y) => new { 
    FirstName = x.FirstName, 
    LastName = x.LastName, 
    PhoneNumber = y.PhoneNumber, 
    CellNumber = y.CellNumber }); 

我不確定是否在Silverlight中沒有Zip。如果不是那麼這就是它的定義

public static IEnumerable<TRet> Zip<T1, T2, TRet>(
    this IEnumerable<T1> enumerable1, 
    IEnumerable<T2> enumreable2, 
    Func<T1, T2, TRet> func) { 

    using (var e1 = enumerable1.GetEnumerator()) { 
    using (var e2 = enumerable2.GetEnumerator()) { 
     while (e1.MoveNext() && e2.MoveNext()) { 
     yield return func(e1.Current, e2.Current); 
     } 
    } 
    } 
} 
+0

Thankss JaredPar Zip在SL中有效。有關如何將此抽象類型轉換回可以提升到視圖的集合的任何快速提示? – rlcrews