Список C # <объект> .RemoveAll () - Как удалить часть списка?

У меня есть 2 класса feeds_Auto и Product с несколькими соответствующими свойствами. Для этой конкретной проблемы мне нужно использовать только AutoID.

У меня есть List с несколькими сотнями уникальных записей. У меня есть небольшой List с 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 для одного элемента на каждом проходе.

7
задан Dmitry Karpezo 2 July 2011 в 07:53
поделиться