2017-03-03 88 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

相關問題