C# 如何从1个集合中查找与第二个集合中的元素部分匹配的元素?
问题:给定2个集合,其中1个集合部分匹配第二个集合中的某些元素,如何识别第一个集合中未在第二个集合中出现的项目 示例输入和期望输出: 文件包含230个元素。一些样本: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个
"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是一种东西!我喜欢。谢谢