Linq-запрос для включения подтипа - PullRequest
2 голосов
/ 07 апреля 2009

В моей модели Address в качестве базового класса и MailingAddress, Email и Phone в качестве подклассов адреса. У Person есть адрес, поэтому запрос для получения лица, имеющего почтовый адрес в Окленде, будет выглядеть следующим образом:

var peopleInOakland = from p in entities.DbObjectSet.OfType<Person>()
                             from a in p.Addresses.OfType<MailingAddress>()
                             where a.City == "Oakland"
                             select p;

Как мне также включить почтовые адреса этого человека в мой результат запроса? Я знаю, что должен использовать «Включить», но я не уверен, как назвать MailingAddress в аргументе .Include.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 07 апреля 2009

Вам нужно будет создать новый тип, имеющий определенный тип, который вы ищете, например:

var peopleInOakland = 
    from p in entities.DbObjectSet.OfType<Person>()
    from a in p.Addresses.OfType<MailingAddress>()
    where a.City == "Oakland"
    select 
        new { Person = p, Addresses = p.Addresses.OfType<MailingAddress>() };
0 голосов
/ 07 апреля 2009

Просто выберите анонимный тип, используя локальное имя выражения понимания:

...
select new {
  Persion = p,
  Address = a
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...