Как сравнить два списка с помощью C #? - PullRequest
2 голосов
/ 28 марта 2012

У меня есть два списка, как я могу проверить, есть ли у list1 какие-то элементы из списка list2

, то есть у меня есть:

list1 = ["car","424", "fwe"]
list2 = ["car", "cat"]

может быть что-то вроде этого:

if list1 has elements from  list2

затем верните true

Ответы [ 4 ]

8 голосов
/ 28 марта 2012

Вы можете использовать Пересечение с любым:

list1.Intersect(list2).Any()
8 голосов
/ 28 марта 2012

Вы можете использовать функции LINQ Intersect, Except.

1 голос
/ 28 марта 2012

Лучшее решение действительно зависит от специфики вашей ситуации.

Например, вы можете сравнить каждую пару элементов, что будет очень простой реализацией.Однако это не особенно эффективно, если списки длинные.

Второй вариант - добавить все элементы одного списка в HashSet, а затем попробовать добавить все элементы второго списка.Если есть общий элемент, метод HashSet Add () вернет false, когда вы попытаетесь добавить дубликат.Это будет быстрее для больших списков, но требует дополнительной памяти и может создавать менее читаемый код.

0 голосов
/ 28 марта 2012

Другое возможное решение:

list1.Any(e => list2.Contains(e));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...