问题:给定2个集合,其中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,但由于两者之间没有相同的元素,因此无法满足我的目的。