如何比较两个列表并找到它们在c#中的不匹配?

时间:2017-03-03 10:01:27

标签: c# linq list

我有两个列表,即list1和list2

假设我的list1有以下元素,

X0

我的list2有以下元素,

"first", "second","third"

所以在这种情况下,字符串“first”和“second”出现在list2中。(但与变量列表中的字符串不完全相同)。

所以在这种情况下,除了“first”和“second”之外我怎么能显示我的结果,list2中只有“third”元素?

我正在使用以下代码

"element first is present here"
"elements are present in second"

先谢谢

1 个答案:

答案 0 :(得分:5)

如果搜索子字符串,则无法使用基于集合的方法(如Except)。所以它不那么有效但仍然可读:

var inOnlyVariableList = list1.Where(s => !list2.Any(s2 => s2.Contains(s))).ToList();

String.Contains查看给定字符串是否包含在较大的字符串中。

如果您想支持不区分大小写的比较,可以使用:

var inOnlyVariableList = list1
    .Where(s => list2.All(s2 => s2.IndexOf(s, StringComparison.InvariantCultureIgnoreCase) == -1))
    .ToList();