Удалить экземпляры из списка с помощью LINQ или Lambda?

Теперь я подошел к этапу получения всех моих данных в виде списка в кеше (объектах), и мое следующее, что я должен сделать, - это удалить некоторые экземпляры из списка.

Обычно я бы делал удаление так:

List<T> list;
List<T2> toBeRemovedItems;
// populate two lists
foreach(T2 item in toBeRemovedItems)
{
    list.Remove(delegate(T one) { 
        // build a condition based on item
        // return true or false
    });
}

Чтобы быть более конкретным, я фактически строю или заполняю список toBeRemvoedItems динамического класса (не формально определенного класса). Например, класс T - это что-то вроде MyClass, а коды для удаления:

class MyClass<C> {
    public string Value1 { get; set; }
    public int Value2 { get; set; }
    public C ObjectC { get; set; }
}
....
List<MyClass<C>> list;
// populate list
// populate toBeRemovedItems. Here is an example of hard-coded codes:
var toBeRemovedLItems = new[] {
    new { Value1="a", Value2 = 1},
    new { Value2="x", Value2 = 10},
    ...
};
// toBeRemovedItems may be the result of Select from a collection
foreach(var item in toBeRemovedLItems)
{
    list.Remove(delegate(MyClass one) {
        return one.Value1 = item.Value1 && one.Value2 < item.Value2;
    });
}

Я пытался найтиRemove() метод вIEnumerable интерфейс от MSDN, но я не могу найти методRemove() там (это имеет смысл, чтоIEnumerable используется только для перечисления). В классе List есть несколько перегруженныхRemove(...) методы. Я не уверен, есть ли альтернативные способы удаления элементов из списка с помощью выражений LINQ или Lambda?

Кстати, я подумал о том, как сделать запрос к списку, чтобы получить подмножество или новыйIEnumerable список с условиями Где, аналогично перемещению элементов из списка. Однако я предпочитаю удалять элементы из моего кэшированного списка, и в некоторых случаях я просто не могу сбросить свойство списка в классе на новый список (частный набор, например).

Ответы на вопрос(7)

Ваш ответ на вопрос