Linq查询更新对象列表,其中包含来自另一个对象列表的一些数据

时间:2014-07-17 09:27:18

标签: c# linq

我有两个对象列表:

IList<DetailsObject>

IList<UpdatesObject>包含更新。

两个对象中的公共不同字段是ID,而UpdatesObject字段只是所有DetailsObject字段的子集。

我可以使用Linq方法使用DetailsObject中的值更新UpdatesObject。我知道最简单的解决方案是迭代UpdatesObject并在每次迭代中找到ID匹配的对象,然后更新所需的内容。

foreach(UpdatesObject uobj in IList<UpdatesObject>)
{
    foreach(DetailsObject dobj in IList<DetailsObject>)
    {
        if (uobj.ID == dobj.ID)
        {
            dobj.Detail1 = uobj.Detail1;
            dobj.Detail2 = uobj.Detail2;
        }
    }
}

没有这样的嵌套循环是否可以实现它?

1 个答案:

答案 0 :(得分:3)

您可以根据ID列加入两个列表,然后使用foreach循环更新对象:

var objects = from u in UpdatesObject
              join d in DetailsObject on u.ID equals d.ID
              select new { Update = u, Detail = d };

foreach(var obj in objects)
{
    obj.Detail.Detail1 = obj.Update.Detail1;
    obj.Detail.Detail2 = obj.Update.Detail2;
}