2017-03-03 94 views
0

我有两个列表,即列表1和List2如何比较两个列表并查找它们在c#中的不匹配?

想,如果我的列表1具有以下元素,

"first", "second","third" 

和我list2中包含以下元素,

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

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

所以在这种情况下,除了“第一个”和“第二个”并显示我的结果,只有“第三个”元素不存在于list2中,我该怎么办?

我使用下面的代码

var inOnlyVariableList = list1.Except(list2).ToList(); 

由于提前

+0

而关于你的代码是什么故障? – BugFinder

+0

使用版本相等比较器:[Enumerable.Except 方法(IEnumerable的,IEnumerable的,的IEqualityComparer )](https://msdn.microsoft.com/en-us/library/bb336390(V = vs.110)。 aspx) – slawekwin

+0

@BugFinder查询返回列表1中的所有元素。但我只想''第三个''存储在'inOnlyVariableList'变量中。 – Malai

回答

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(); 
+0

谢谢..您的解决方案提供了正确的结果 – Malai

相关问题