我有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