Запрос двух таблиц SQL с помощью LINQ - PullRequest
0 голосов
/ 20 февраля 2012

Я получил таблицу Peoples и таблицу PeopleRequirements.

PeopleRequirements.PeopleId назначается с ограничением FK на Peoples.Id и также содержит битовое (логическое) поле PeopleRequirements.IsActive.

Теперь я хочу опросить всех людей, которым существует строка в PeopleRequirements (где существует строка, равная PeopleId == People.Id), а поле PeopleRequirements.IsActive равно true.

Какя могу достичь этого с EF4 и LINQ?

Я уже пробовал использовать свойства NavigationProperties:

e.QueryableSource = _dataContext.Peoples.Where(a => a.EMail != string.Empty && a.EMail != null && a.PeopleRequirements.Count > 0);

1 Ответ

1 голос
/ 20 февраля 2012

Обычно это не то, что вы делаете в EF, обычно вы используете свойство навигации в вашей модели для связи двух сущностей. Сказав, что вот linq вы бы использовали, если они не связаны в обычном порядке.

from pplReq in PeopleRequirements
from person in People
where pplReq.PeopleId == person.Id
where pplReq.IsActive
select pplReq;

РЕДАКТИРОВАТЬ: на основе вашего обновления вокруг свойств навигации вы можете использовать

from pr in _dataContext.PeopleRequirements
where pr.People != null
where pr.IsActive
select pr

это найдет все PeopleRequirements, которые активны и связаны с реальным человеком

РЕДАКТИРОВАТЬ: вот обратный случай, люди с прикрепленными активными требованиями

from person in _dataContext.Peoples
from req in person.PeopleRequirements
where req.IsActive
select distinct person

Я не слишком уверен, нужно ли вам отличное или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...