我有2个List对象(简体):LINQ的过滤列表<string>它包含从另一个列表中的字符串值<string>
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())));
我似乎无法使为什么我得到什么,显然我失去了一些东西的感觉,但我不知道是什么。
[编辑]
好了,看来我应该在我的问题更清楚,我想搜索文件在我的fileList从我filterList包含字符串值的字符串。对于那些试图做类似事情的人,我已经给出了下面的答案。
为什么你使用任何? var filteredFileList = fileList.Where(fl => filterList.Contains(fl)); – 2013-04-08 13:06:15
我认为,对于你的表达,你采取单一的文件列表比x会是一个字符,它看起来如果filterList包含字符。(字符串变成IEnumerable) –
2013-04-08 13:13:21
@David Tryon - 我以前没有使用Intersect,虽然运行它,当我知道它应该包含一些值时,我得到一个空列表:var filteredFileList = fileList.Intersect(filterList); – 2013-04-08 13:16:06