簡體   English   中英

Linq過濾器列表<string>它包含來自另一個列表的字符串值<string></string></string>

[英]Linq filter List<string> where it contains a string value from another List<string>

我有 2 個列表對象(簡化):

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 的字符串值 substring。 對於那些試圖做類似事情的人,我在下面標記了答案。

它更容易:

fileList.Where(item => filterList.Contains(item))

如果您想要過濾不是完全匹配但是對於“包含”,您可以使用此表達式:

var t = fileList.Where(file => filterList.Any(folder => file.ToUpperInvariant().Contains(folder.ToUpperInvariant())));

請嘗試以下方法:

var filteredFileSet = fileList.Where(item => filterList.Contains(item));

當您遍歷filteredFileSet (請參閱LINQ執行 )時,它將包含一組IEnumberable值。 這基於Where運算符檢查以確保fileList數據集中的項目包含在filterList集合中。

由於fileList是一組IEnumerable字符串值 ,您可以將' item '值直接傳遞給Contains方法。

你可以做到這一點

var filteredFileList = fileList.Where(fl => filterList.Contains(fl.ToString()));

Select * 來自 employee Where cityID in ( select cityID from cities where countryID=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM