2014-05-06 3 views
0

Я пытаюсь найти значения строки, которые не входят в другой список.Найти элементы, которых нет в другом списке

У меня есть список, как:

var list1 = new List<string>(); 
     list1.Add("element1"); 
     list1.Add("element2"); 


var list2 = new List<string>(); 
     list2.Add("element1"); 
     list2.Add("element2"); 
     list2.Add("element3"); 

Мне нужно найти элементы list2, которые не находятся в list1, поэтому результат должен быть только: element3. Я попытался сделать что-то вроде правого соединения с LINQ, но он не увенчался успехом. Может быть, кто-то знает правильное решение для этого?

+0

Что, в частности, пытались ли вы, и какие у вас проблемы с этим решением? – Servy

ответ

5

Использование Enumerable.Except

разности множеств двух последовательностей, используя по умолчанию равенства компаратора для сравнения значений.

var result = list2.Except(list1); 

Другой способ сделать это может быть:

var result = list2.Where(r => !list1.Contains(r)); 

Если вам нужен List<string> как результат, то просто добавьте ToList().

0
list2.Except(List1) 

.Except() должен работать

Смежные вопросы