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>();

すべての Object2 を Object1 に追加したいと思います。ここで、Object1LinkedIDは に等しくなりObject1ます。これは、新しいオブジェクトにすることも、元の Object1 リストを単に更新することもできます。

4

2 に答える 2

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);
}
于 2012-07-09T20:41:41.837 に答える
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));
}
于 2013-10-16T09:32:51.523 に答える