本文介绍了比较两个列表,并从另一个列表中删除包含条目的每个项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我实际上试图将fileManifest
中的所有列表项都复制,但是仅将exclusionFilters
中的任何项中不包含的列表项复制到新初始化的列表中.除了嵌套的foreach
循环之外,该方法也是一种优雅的方法.
I'm trying to essentially copy any list items in fileManifest
but only those that don't contain in any of the items from exclusionFilters
to a newly initialized list.
I haven't figured out an elegant way to do this other than a nested foreach
loop.
一个偶然的人对这个问题有更好的解决方案吗?也许LINQ
?
Does someone by chance have a better solution for this problem? Maybe LINQ
?
var fileManifest = new List<string>()
{
@"C:\Test\Directory1\File1.xml",
@"C:\Test\Directory1\File2.xml",
@"C:\Test\Directory1\Directory2\File1.xml",
};
var exclusionFilters = new List<string>()
{
@"Directory2\"
};
var filteredList = new List<string>();
filteredList
的预期输出:
-
C:\Test\Directory1\File1.xml
-
C:\Test\Directory1\File2.xml
C:\Test\Directory1\File1.xml
C:\Test\Directory1\File2.xml
推荐答案
var filteredList = fileManifest.Where(x => exclusionFilters.All(y => !x.Contains(y))).ToList();
说明:
-
Enumerable.Where
方法:基于谓词过滤值序列. -
Enumerable.All
方法:确定序列中的所有元素是否都满足条件. -
String.Contains(String)
方法:返回一个值,该值指示在该字符串内是否出现了指定的子字符串. -
Enumerable.ToList
方法:从IEnumerable创建列表.
这篇关于比较两个列表,并从另一个列表中删除包含条目的每个项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!