Как выбрать человека, только если его идентификатор указан в другой таблице? - PullRequest
0 голосов
/ 20 января 2011

В следующем операторе LINQ я пытаюсь выбрать людей, но только если их Id появляется в другой таблице (объединяющая таблица).Чего мне не хватает?

В этом примере у меня есть таблица People и таблица Contractors.ContactId этого лица может появиться в таблице подрядчиков.Я хочу получить контактные данные людей, которые отображаются в таблице подрядчиков.

var allPeople = People.Where(x => x.Contractors
                                   .Where(m=> m.ContactID == x.ContactID)
                                  .Select(x => x.ContactID));

Ответы [ 2 ]

1 голос
/ 21 января 2011

Как насчет обычного оператора LINQ JOIN:

var peopleWithContact = People.Join(
    Contractors, 
    p => p.ContactId, // the field to join by from People table
    c => c.ContactId, // the field to join by from Contractors table
    (p, c) => p.ContactId); // the result if match; could be just p.
0 голосов
/ 20 января 2011

Функция Where должна возвращать логическое выражение.Если я правильно понимаю ваш вопрос, вам нужны только те люди из таблицы народов, которые также есть в таблице подрядчиков.Тогда мы можем спросить только это: Дайте мне человека, если какой-либо подрядчик имеет этот идентификатор:

var allPeople = People.Where(x => x.Contractors
                                   .Any(m => m.ContactID == x.ContactID));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...