我有两个对象列表:
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;
}
}
}
没有这样的嵌套循环是否可以实现它?
答案 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;
}