2016-04-08 22 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を取り、私はこれが可能であるBに行った変更との完全なデータを持つようにしたいA.でそれをマージしたい

言う変わったのか?これは以下の私のデータであると仮定すると、

。これをどうやってまとめるの?

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

は、その後、あなたが最初に、マージされたリストが含まれます2つのリスト

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

をマージする.Union()をLINQを使用することができます実装クラスのための比較子を作成します。 manipulatedDataからのアイテムは、その後、objMainDataから項目を内のアイテムのProcessDataId一致するものを持ちません。今すぐ注文していないので、上記のクエリの最後に.OrderBy(x => x.ProcessDataId)句を追加することができます。

+0

ありがとう。私はちょうどテストデータを追加しました。どうすればこれをまとめることができますか?前にこれを使ったことはありません。 – user2320476

+0

あなたは何を理解していませんか? –

+0

これを自分のデータにどのように結びつけるのですか? – user2320476