我有2个字符串列表,list A
和list B
。list A
是包含路径的字符串列表,另一个包含文件夹的字符串。例子:
List<string> listA = new List<string>{ "c:\myPath\FolderA\blabla\", "c:\myPath\FolderB\blabla2\", "c:\myPath\FolderA\blabla3\" "c:\myPath\FolderC\blabla\"};
List<string> listB = new List<string> { "FolderA, FolderC"};
我想要一种比较2列表的方法。如果listA
包含其中任何一个listB
有效,否则我不想要它。因此,基于此逻辑,我将有:
List<string> listReturn = new List<string>{ "c:\myPath\FolderA\blabla\", "c:\myPath\FolderA\blabla3\" "c:\myPath\FolderC\blabla\"};
到目前为止,我所做的只是一个遍历第一个列表并Contain
使用LinqAny
调用对字符串进行调用的方法,如下所示:
private static List<string> FilterList(List<string> listA, List<string> listB)
{
List<string> listReturn = new List<string>();
foreach (string val in listA)
{
if (listB.Any(item => val.Contains(item)))
{
listReturn.Add(val);
}
}
return listReturn;
}
这还不错,但是如果有一个Intersect方法可以使用的话,我想使用Linq方法或.NET方法。谢谢你。
使用Where()
针对listA
在该列表和过滤项Exists()
上listB
的过滤条件:
List<string> listA = new List<string> {@"c:\myPath\FolderA\blabla\", @"c:\myPath\FolderA\blabla2\", @"c:\myPath\Folder\blabla3\", @"c:\myPath\FolderC\blabla\"};
List<string> listB = new List<string> { "FolderA", "FolderC" };
var intersect = listA.Where(a => listB.Exists(b => a.Contains(b)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句