Используйте List<T>.RemoveAll Method (Predicate<T>)
с предикатом, который проверяет, содержит ли список ключевых слов значение.
Пример консольного приложения:
public static class Program
{
public class A
{
public string Value { get; set; }
}
public static void Main(string[] args)
{
var keywords = new List<string>() {"A", "B", "C", "D"};
var aas = new List<A>()
{
new A() {Value = "A"},
new A() {Value = "AA"},
new A() {Value = "B"},
new A() {Value = "AB"}
};
Console.WriteLine("Before remove:");
aas.ForEach(a => Console.WriteLine(" A.Value = {0}", a.Value));
aas.RemoveAll(a => keywords.Contains(a.Value));
Console.WriteLine("After remove:");
aas.ForEach(a => Console.WriteLine(" A.Value = {0}", a.Value));
}
}
Выход консоли:
Before remove:
A.Value = A
A.Value = AA
A.Value = B
A.Value = AB
After remove:
A.Value = AA
A.Value = AB
Обратите внимание, что решение Styxxy (хорошая одна линия!) Не использует LINQ. Этот элегантный код доступен, поскольку generics находятся в .NET (версия 2.0, если я не ошибаюсь) –
Сторона примечания: 'HashSet' - лучшая коллекция для * ключевых слов *, чем 'List ', она выполняет 'Contains' быстрее , –