2012-07-09 29 views
0

名單我有2個對象如下:到另一個對象添加項目的清單,其中兩個值相等

public class object1 
{ 
    public int Object1ID { get; set; } 
    public string SomeValue { get; set; } 
    public List<object2> ListOfObject2 { get; set; } 
} 

public class object2 
{ 
    public int Object2ID { get; set; } 
    public string SomeValue2 { get; set; } 
    public int Object1LinkedID { get; set; } 
} 

Object1ID和Object2ID是唯一的ID。

我將它們填充爲列表(所以我有一個Object1列表和一個Object2列表)。

List<Object1> listObject1 = new List<Object1>(); 
List<Object2> listObject2 = new List<Object2>(); 

我想所有的Object2s添加到Object1其中Object1LinkedID等於Object1。這可以成爲一個新的對象或者只是對原始Object1列表的更新。

+0

哪裏Object1LinkedID等於什麼?到Object1的特定實例的Object1ID?我不明白你的'Object1LinkedID等於Object1'的條件。 – daniloquio 2012-07-09 20:42:23

+0

object2.Object1LinkedID = ojbect1.Object1ID。在SQL中,我將加入該ID SELECT * FROM Object1 JOIN Object2 ON Object1.Object1ID = Ojbect2.Object1LinkedID或沿着這些行的東西 – Bryce 2012-07-09 20:58:31

回答

1

這應該工作:

var groups = listObject2.GroupBy(o2 => o2.Object1LinkedID); 
foreach(var o1Group in groups) 
{ 
    object1 o1 = listObject1.Where(o => o.Object1ID == o1Group.Key).First(); 
    o1.ListOfObject2.AddRange(o1Group); 
} 
0
var query = from o1 in listObject1 
     join o2 in listObject2 
      on o1.Object1ID equals o2.Object1LinkedID 
      into go2 
     select new {O1 = o1, O2Coll = go2}; 

foreach (var rel in query) 
{ 
    rel.O1.ListOfObject2.AddRange(rel.O2Coll); 
} 

foreach (var object1 in listObject1) 
{ 
    int o1Id = object1.Object1ID; 
    object1.ListOfObject2.AddRange(listObject2.Where(o => o.Object1LinkedID == o1Id)); 
} 
相關問題