LINQ для сравнения элемента в одном списке с любым элементом в другом - PullRequest
1 голос
/ 11 февраля 2012

Интересно, кто-нибудь может мне помочь ...

Есть ли запрос LINQ, который будет возвращать логическое значение, если какой-либо элемент из одного IList<> содержится в другом IList<>.

Это IList<>'s объект, и мне нужно сравнить одно-единственное свойство объекта, в данном случае свойство "Имя"?

Есть ли запрос LINQ, который может это сделать? Если так, может кто-то показать мне правильную реализацию?

Спасибо

Ответы [ 3 ]

9 голосов
/ 11 февраля 2012

Ну, вы можете проецировать оба списка:

if (list1.Select(x => x.Name)
         .Intersect(list2.Select(x => x.Name))
         .Any())

Это то, что вы ищете?

6 голосов
/ 11 февраля 2012

Я думаю, что это должно сделать это:

bool matchExists = list1.Any(a1 => list2.Any(a2 => a1.Name == a2.Name));
2 голосов
/ 11 февраля 2012

Еще один для ваших вариантов:

List1.Where(l => List2.Select(s => s.Name).Contains(l.Name)).Any();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...