Сравнение двух списков и удаление каждого элемента, содержащего запись, из другого списка - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь скопировать любые элементы списка в fileManifest, но только те, которые не содержатся ни в одном из элементов из exclusionFilters, во вновь инициализированный список.
Я не понял элегантный способ сделать это, отличный от вложенного foreach l oop.

Есть ли у кого-нибудь случайно лучшее решение этой проблемы? Может быть LINQ?

var fileManifest = new List<string>()
{
   @"C:\Test\Directory1\File1.xml",
   @"C:\Test\Directory1\File2.xml",
   @"C:\Test\Directory1\Directory2\File1.xml",
};

var exclusionFilters = new List<string>()
{
  @"Directory2\"
};

var filteredList = new List<string>();

Ожидаемый результат filteredList:

  • C:\Test\Directory1\File1.xml
  • C:\Test\Directory1\File2.xml

1 Ответ

0 голосов
/ 10 июля 2020
var filteredList = fileManifest.Where(x => exclusionFilters.All(y => !x.Contains(y))).ToList();

Описание:

  • Enumerable.Where Метод: фильтрует последовательность значений на основе предиката.
  • Enumerable.All Метод: определяет, все ли элементы последовательности удовлетворяют условию.
  • String.Contains(String) Метод: возвращает значение, указывающее, встречается ли указанная подстрока в этой строке.
  • Enumerable.ToList Метод: создает список из IEnumerable.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...