Linq-запрос для обновления списка объектов некоторыми данными из другого списка объектов

1

У меня есть список из двух объектов:

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;
        }
    }
}

Можно ли достичь этого без такой вложенной циклы?

  • 0
    Может быть, есть лучший способ обрабатывать обновления объектов?
Теги:
linq

1 ответ

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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню