У меня есть список из двух объектов:
IList<DetailsObject>
а также
IList<UpdatesObject>
содержащий обновления.
Общее поле в обоих объектах - это ID, а поле UpdatesObject
- всего лишь подмножество всех полей DetailsObject
.
Могу ли я использовать метод Linq для обновления DetailsObject
со значениями из UpdatesObject
. Я знаю, что самым простым решением было бы UpdatesObject
и в каждый объект поиска итерации, где совпадают идентификаторы, а затем обновить то, что необходимо.
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;
}
}
}
Можно ли достичь этого без такой вложенной циклы?
Вы можете присоединиться к двум спискам на основе столбца 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;
}