Как использовать Any () вместо RemoveAll () для исключения элементов списка? - PullRequest
0 голосов
/ 28 ноября 2018

ListWithAllItems содержит два типа элементов: те, которые я хочу выбрать, и те, которые я не выбираю.

listForExcluding содержит элемент, который я должен исключить:

List<string> listForExcluding = ...;

Итак, я делаю это в двух строках:

List<string> x = ListWithAllItems.ToList();

x.RemoveAll(p => listForExcluding.Any(itemForExclude => itemForExclude == p));

Как мне использовать Any() вместо RemoveAll(), чтобы получить этот запрос одной строкой?

1 Ответ

0 голосов
/ 28 ноября 2018

Any здесь не имеет смысла, просто используйте Except:

var filtered = ListWithAllItems.Except(listForExcluding);

ToList, если вам действительно нужен список в конце, иначе не реализуйте IEnumerables без причины(вызывает дополнительное перечисление).

Если вам действительно нужна версия RemoveAll по какой-то причине, используйте Contains (это также как сделать это с помощью Where):

x.RemoveAll(p => listForExcluding.Contains(p));

Есть ряд других допустимых строк ... но если серьезно, просто идите с Except

...