如何从1个集合中找到与第二个集合中的元素部分匹配的元素?

时间:2017-02-22 12:47:34

标签: c# linq

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

0 个答案:

没有答案