2016-04-08 63 views
0

我有一個如下所示的模型。將兩個通用列表合併在一起

public class ProcessData 
{ 
    public Int32 ProcessDataId { get; set; } 
    public string routenumber { get; set; } 
    public string representative { get; set; } 
    public string Ischecked { get; set; } 
} 

我用數據

A. List<ProcessData> objMainData填充此 - 這樣做的主要的數據說,大約40行數據

的B. List<ProcessData> Manipulated data - 這與一些修改的主要數據。我改變了2個字段的數據說10行

我想採取B並將它與A合併。我希望A具有我在B中所做的修改的完整數據。這可能嗎?

假設這是我的數據如下。我怎麼把它放在一起?

 public class Collectiondata 
      { 
       public List<ProcessData> Objmaindata() 
       { 
        List<ProcessData> objMain = new List<ProcessData>(); 
        objMain.Add(new ProcessData() { ProcessDataId=1,routenumber="2001",representative="James",Ischecked=""}); 
        objMain.Add(new ProcessData() { ProcessDataId=2,routenumber="2002",representative="John",Ischecked=""}); 
        objMain.Add(new ProcessData() { ProcessDataId=3,routenumber="2003",representative="",Ischecked=""}); 
        objMain.Add(new ProcessData() { ProcessDataId=4,routenumber="2004",representative="Bassey",Ischecked=""}); 
        objMain.Add(new ProcessData() { ProcessDataId=5,routenumber="2005",representative="Adams",Ischecked="" }); 
        return objMain; 
       } 

       public List<ProcessData> ManipulatedData() 
       { 
        List<ProcessData> objMain = new List<ProcessData>(); 
        objMain.Add(new ProcessData() { ProcessDataId = 1, routenumber = "3001", representative = "Sumbo", Ischecked = "Y" }); 
        objMain.Add(new ProcessData() { ProcessDataId = 2, routenumber = "2002", representative = "Folabi", Ischecked = "Y" }); 
        objMain.Add(new ProcessData() { ProcessDataId = 3, routenumber = "3035", representative = "James", Ischecked = "Y" }); 
        return objMain; 
       } 


      } 
+0

ProcessDataId是唯一標識符,並且該類是否有比較器? –

+0

是ProcessDataId是唯一標識符。它沒有比較器 – user2320476

+0

您可以通過創建一個比較器('IEqualityComparer ')並使用linq'.Union()'子句來做到這一點。給我一點時間來測試代碼,我會添加一個答案。 –

回答

0

創建相關類的比較器實現IEqualityComparer<T>

public class ProcessDataComparer : IEqualityComparer<ProcessData> 
{ 
    public bool Equals(ProcessData x, ProcessData y) 
    { 
     return x.ProcessDataId.Equals(y.ProcessDataId); 
    } 
    public int GetHashCode(ProcessData obj) 
    { 
     return obj.ProcessDataId; 
    } 
} 

然後你可以使用LINQ .Union()合併2所列出

var mergedList = manipulatedData.Union(objMainData, new ProcessDataComparer()); 

合併後的名單將包括:第一,來自manipulatedData的物品,然後是objMainData的物品,它們沒有與中的物品相匹配的。請注意,因爲它們現在不合適,所以您可能需要在上述查詢的末尾添加一個.OrderBy(x => x.ProcessDataId)子句。

+0

謝謝。我剛剛添加了一個測試數據。我現在怎麼把它放在一起。以前從未使用過。 – user2320476

+0

你不理解什麼部分? –

+0

如何將此數據與我的數據綁定? – user2320476