Вопрос: Учитывая две коллекции, в которых 1 коллекция частично соответствует некоторым элементам во второй коллекции, как я могу идентифицировать элементы в первой коллекции, которые не отображаются во второй коллекции?Как найти элементы из 1 коллекции, которая частично соответствует элементам во второй коллекции?
Пример ввода & Желаемая Выход:
files
имеет 230 элементов. Несколько образцов:
"C:\Some\Dir\My_File_01.ext"
"C:\Some\Dir\My_File02.ext"
"C:\Some\Dir\My_File3.ext"
"C:\Some\Dir\MyFile4.ext"
names
содержит 25 элементов. Примеры:
"_01"
"e02"
"File_03"
desiredOutput
должен содержать 1 элемент: "File_03"
. Мы не хотим "_01"
, потому что это соответствует хвостовому концу первого элемента files
. Я не хочу "e02"
, потому что это тоже существует во втором элементе files
.
Моя попытка:
Я смотрел на this question но у меня возникают трудности модификации заявление на работу для меня. Это то, что у меня есть:
var matching = from f in files where names.Any(n => !f.Contains(n)) select f; // returns 230 elements
Я также попытался:
var matching = from n in names where files.Any(f => !n.Contains(f)) select n; // returns the original set of 25 elements from names
И третья модификация:
var matching = from n in names where files.Any(f => !f.Contains(n)) select n; // also returns the original 25 from names
Я также смотрел на Enumerable.Intersect, но так как ни один из элементов между два идентичны, это не сработает для моих целей.
правило (s) Matching неясна. Можете ли вы указать их явно? –
var matching = names.Where (name =>! Files.Any (file => file.ToLower(). Содержит (name.ToLower()))); – jitender
@ sab669 Рад помочь вам. – jitender