как сравнить элементы двух списков с linq?

У меня есть два списка и один из них имеет 5 элементов, а в другой-4 элементов. У них есть некоторые одинаковые элементы, но у них есть и разные элементы. Я хочу создать список с другим элементом. Как я могу это сделать?

Примечание: список 5 элементов-мой основной список.

2 ответов


как насчет этого?

var list1 = new List<int>( new []{1,2,3,4,5});
var list2 = new List<int>( new []{1,3,4});
var list3 = list1.Except( list2);

В этом случае list3 будет содержать только 2 и 5.

редактировать

Если вы хотите, чтобы элементы из обоих наборов были уникальными, достаточно следующего кода:

var list1 = new List<int>( new []{1,2,3,4,5});
var list2 = new List<int>( new []{1,3,4,7});
var list3 = list1.Except(list2).Union(list2.Except(list1));

выведет 2,5 и 7.


Если вам интересно, противоположность этому называется пересечение

string[] collection1 = new string[] { "1", "7", "4" };
string[] collection2 = new string[] { "6", "1", "7" };

var resultSet = collection1.Intersect<string>(collection2);

foreach (string s in resultSet)
{
    Console.WriteLine(s);
}