我有2个List对象(简化):
var fileList = Directory.EnumerateFiles(baseSourceFolderStr, fileNameStartStr + "*", SearchOption.AllDirectories);
var filterList = new List<string>();
filterList.Add("ThisFolderName");
filterList.Add("ThatFolderName");
我想过滤fileLst以仅返回包含filterList中任何文件夹名称的文件。 (我希望这是有道理的..)
我已经尝试过以下表达式,但这总是返回一个空列表。
var filteredFileList = fileList.Where(fl => fl.Any(x => filterList.Contains(x.ToString())));
我似乎无法理解为什么我什么都没得到,显然我错过了一些东西,但是我不知道该怎么办。
[编辑]
好的,看来我的问题应该更清楚了,我试图用包含来自filterList的字符串值的子字符串在fileList中搜索文件。对于那些试图做类似事情的人,我在下面标记了答案。
最佳答案
它甚至更容易:
fileList.Where(item => filterList.Contains(item))
如果您不想过滤完全匹配,而是过滤“包含”,则可以使用以下表达式:
var t = fileList.Where(file => filterList.Any(folder => file.ToUpperInvariant().Contains(folder.ToUpperInvariant())));
关于c# - Linq过滤器List <string>,其中包含另一个List <string>的字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15879771/