У меня есть модель, которая содержит массив целых чисел (model.ProductCheckedIds), который представляет проверенные продукты в пользовательском интерфейсе.
У меня также есть объект EF (ведущий) с дочерними объектами (LeadProducts).
Я придумала это решение, чтобы удалить все дочерние элементы, которые сейчас отменены, и добавить все вновь выбранные.
Может ли это быть код упрощен или улучшен?
var addIds = model.ProductCheckedIds.Except(lead.LeadProducts.Select(x => x.ProductId));
var toAdd = addIds.Select(addId => new LeadProduct {LeadId = model.LeadId, ProductId = addId}).ToList();
var removeIds = lead.LeadProducts.Select(x => x.ProductId).Except(model.ProductCheckedIds);
var toRemove = removeIds.Select(removeId => lead.LeadProducts.Single(x => x.ProductId == removeId)).ToList();
toRemove.ForEach(x=>lead.LeadProducts.Remove(x));
toAdd.ForEach(x => lead.LeadProducts.Add(x));