当前位置: 首页 > 编程语言 > C#

LinqfilterListwhichcontainsstringvaluesfromanotherListshare

时间:2023-04-10 10:40:49 C#

LinqfilterListwhichcontainsstringvaluesfromanotherList我有2个List对象(简化):varfileList=Directory.EnumerateFiles(baseSourceFolderStr,fileNameStartStr+"*",SearchOption.AllDirectories);varfilterList=new列表();filterList.Add("ThisFolderName");filterList.Add("ThatFolderName");我想过滤fileLst以仅返回文件的filterList文件夹名称中包含的任何文件。(我希望这是有道理的。)我尝试了以下表达式,但这总是返回一个空列表。varfilteredFileList=fileList.Where(fl=>fl.Any(x=>filterList.Contains(x.ToString())));我似乎无法弄清楚为什么我什么也没得到,显然我错过了一些东西,但我不确定它是什么。[编辑]好的,看来我应该更清楚地了解我的问题,我正在尝试在我的fileList中搜索包含来自我的filterList的字符串值的子字符串的文件。对于那些试图做类似事情的人,我已经在下面标记了答案。它甚至更容易:fileList.Where(item=>filterList.Contains(item))如果你想过滤的不是精确匹配而是“包含”,你可以使用这个表达式:vart=fileList.Where(file=>filterList。任何(文件夹=>file.ToUpperInvariant().Contains(folder.ToUpperInvariant())));试试这个:varfilteredFileSet=fileList.Where(item=>filterList.Contains(item));当您循环遍历filteredFileSet(请参阅LINQ实现)时,它将包含一个IEnumberable值数组。这是基于Where运算符检查以确保fileList数据集中的项目包含在filterList集中。由于fileList是一个IEnumerable字符串值数组,您可以将“item”值直接传递给Contains方法。你可以这样做。以上是C#学习教程:LinqfilterList,包含了从另一个List共享字符串值的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——varfilteredFileList=fileList.Where(fl=>filterList.Contains(fl.ToString()));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: