Csharp/C#教程:LinqfilterList ,其中包含来自另一个List 的字符串值分享


LinqfilterList ,其中包含来自另一个List 的字符串值

我有2个List对象(简化):

var fileList = Directory.EnumerateFiles(baseSourceFolderStr, fileNameStartStr + "*", SearchOption.AllDirectories); var filterList = new List(); filterList.Add("ThisFolderName"); filterList.Add("ThatFolderName"); 

我想过滤fileLst以仅返回包含filterList中任何文件夹名称的文件。 (我希望这是有道理的..)

我尝试了以下表达式,但这总是返回一个空列表。

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

我似乎无法理解为什么我什么也得不到,显然我错过了什么,但我不知道是什么。

[编辑]

好的,所以看来我应该更清楚我的问题,我试图在我的fileList中搜索包含来自我的filterList的字符串值的子字符串中的文件。 我已经为那些试图做类似事情的人标记了下面的答案。

它更容易:

 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方法。

你可以做到这一点

上述就是C#学习教程:LinqfilterList ,其中包含来自另一个List 的字符串值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1040465.html

(0)
上一篇 2022年1月28日
下一篇 2022年1月28日

精彩推荐