как сравнить элементы двух списков с 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);
}