Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从1个集合中查找与第二个集合中的元素部分匹配的元素?_C#_Linq - Fatal编程技术网

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

C# 如何从1个集合中查找与第二个集合中的元素部分匹配的元素?,c#,linq,C#,Linq,问题:给定2个集合,其中1个集合部分匹配第二个集合中的某些元素,如何识别第一个集合中未在第二个集合中出现的项目 示例输入和期望输出: 文件包含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" 名称包含25个元素。样本: "_01" "e02" "File_03" desiredOutput应包含1个

问题:给定2个集合,其中1个集合部分匹配第二个集合中的某些元素,如何识别第一个集合中未在第二个集合中出现的项目

示例输入和期望输出:

文件包含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"
名称包含25个元素。样本:

"_01"
"e02"
"File_03"
desiredOutput应包含1个元素:File_03。我们不需要_01,因为它与文件的第一个元素的结尾匹配。我不想要e02,因为它也存在于文件的第二个元素中

我的尝试:

我看了一下,但是我很难修改这个声明来为我工作。这就是我所拥有的:

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
我也看了,但由于两者之间没有一个元素是相同的,所以我的目的是不可行的

var matching = names.Where(name => !files.Any(file => file.ToLower().Contains(name.ToLower())));

匹配规则不明确。您能显式地指定它们吗?var matching=names.Wherename=>!files.Anyfile=>file.ToLower.Containsname.ToLower@sab669很高兴能帮助你。太棒了,我不知道dotnetfiddle是一种东西!我喜欢。谢谢