У меня есть 2 класса feeds_Auto и Product с несколькими подходящими свойствами. Для этой конкретной проблемы AutoID - единственное поле, которое мне нужно использовать.
У меня есть List<FeedsAuto>
с несколькими сотнями уникальных записей. У меня есть небольшая List<Product>
с 10, 20 уникальными записями. Теперь я хочу удалить все элементы из небольшого списка из большого списка.
Как мне использовать RemoveAll ({лямбда-выражение}) для достижения этой цели? Все примеры, которые я нашел, зависят от общего списка простых типов (строки, целые и т. Д.).
private static int DoInserts(ref List<Model.feeds_Auto> source, ref List<Model.Product> target, Guid companyID)
{
List<Model.Product> newProductList = new List<Model.Product>();
List<Model.Product> dropSourceList = new List<Model.Product>();
using (var db = Helpers.GetProdDB())
{
foreach (var src in source)
{
var tgt = target.Where(a => a.alternateProductID == src.AutoID && a.LastFeedUpdate < src.DateModified).FirstOrDefault();
if (tgt == null)
{
newProductList.Add(new Model.Product{...});
dropSourceList.Add(src);
}
}
db.SaveChanges();
if (dropSourceList.Count > 0)
{
source.RemoveAll(????);
}
}
}
Сделать это в цикле не сложно:
foreach (var drop in dropSourceList)
{
source.RemoveAll(a => a.AutoID == drop.AutoID);
}
Для меня просто не имеет смысла зацикливаться на наборе для вызова RemoveAll для одного элемента в каждом проходе.