Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含子类型的Linq查询_C#_Linq_Entity Framework - Fatal编程技术网

C# 包含子类型的Linq查询

C# 包含子类型的Linq查询,c#,linq,entity-framework,C#,Linq,Entity Framework,在我的模型中,我将Address作为基类,将MailingAddress、Email和Phone作为Address的子类。一个人有一个地址,因此查询一个拥有奥克兰邮寄地址的人时,如下所示: var peopleInOakland = from p in entities.DbObjectSet.OfType<Person>() from a in p.Addresses.OfType<MailingAddress>

在我的模型中,我将
Address
作为基类,将
MailingAddress
Email
Phone
作为Address的子类。一个
有一个地址,因此查询一个拥有奥克兰邮寄地址的人时,如下所示:

var peopleInOakland = from p in entities.DbObjectSet.OfType<Person>()
                             from a in p.Addresses.OfType<MailingAddress>()
                             where a.City == "Oakland"
                             select p;
var peopleInOakland=来自entities.DbObjectSet.OfType()中的p
从类型()的p.Addresses.中的
其中a.城市==“奥克兰”
选择p;
我如何在我的查询结果中包括此人的邮寄地址?我知道我应该使用Include,但我不确定如何在
.Include
参数中命名
MailingAddress


提前感谢

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

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

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

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>() };
var peopleInOakland=
来自entities.DbObjectSet.OfType()中的p
从类型()的p.Addresses.中的
其中a.城市==“奥克兰”
挑选
新的{Person=p,Addresses=p.Addresses.OfType()};

我想他是在要求语法来填充Person对象,这些对象返回的地址类型为MailingAddress。尽管如此,我还是不知道该怎么做:)@Jonathan:如果正确的话,那么这只是对两个答案的细微修改,但需要澄清;因为两个答案都是“在查询结果中包含邮件地址[…]”