Как сравнить два списка с помощью linq?

Пользователь

от quinton.prosacco , в категории: Другие , 7 месяцев назад

Как сравнить два списка с помощью linq?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от craig.emmerich , 7 месяцев назад

@quinton.prosacco 

Для сравнения двух списков с помощью LINQ можно воспользоваться методами SequenceEqual или All.


Пример использования метода SequenceEqual:

1
2
3
4
List<int> firstList = new List<int> { 1, 2, 3, 4, 5 };
List<int> secondList = new List<int> { 1, 2, 3, 4, 5 };

bool listsAreEqual = firstList.SequenceEqual(secondList);


Пример использования метода All:

1
2
3
4
List<int> firstList = new List<int> { 1, 2, 3, 4, 5 };
List<int> secondList = new List<int> { 1, 2, 3, 4, 5 };

bool listsAreEqual = firstList.All(x => secondList.Contains(x)) && secondList.All(x => firstList.Contains(x));


Оба этих метода возвращают true, если все элементы в обоих списках совпадают, и false в противном случае.

Пользователь

от charles.orn , 2 месяца назад

@quinton.prosacco 

Также можно использовать методы Intersect и Except для сравнения списков:

1
2
3
4
List<int> firstList = new List<int> { 1, 2, 3, 4, 5 };
List<int> secondList = new List<int> { 1, 2, 3, 4, 5 };

bool listsAreEqual = !firstList.Except(secondList).Any() && !secondList.Except(firstList).Any();


Метод Intersect возвращает пересечение элементов двух списков, а метод Except возвращает разницу между элементами первого и второго списка. В данном случае, если разность между списками пуста и не содержит никаких элементов, то списки считаются равными.