Linq查询包含一个子类型

时间:2009-04-07 19:46:05

标签: c# linq entity-framework

在我的模型中,我将Address作为基类,将MailingAddressEmailPhone作为Address的子类。 Person有一个地址,因此查询以获得拥有Oakland Mailing地址的人将会是这样的:

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

如何在查询结果中包含此人的邮寄地址?我知道我应该使用Include,但我不确定如何在MailingAddress参数中命名.Include

提前致谢

2 个答案:

答案 0 :(得分:2)

您必须创建一个具有您要查找的特定类型的新类型,如下所示:

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>() };

答案 1 :(得分:0)

只需使用理解表达式的本地名称选择匿名类型:

...
select new {
  Persion = p,
  Address = a
};