实体框架linq查询返回子集合

时间:2017-06-14 14:01:21

标签: c# entity-framework linq

我有一张没有外键的桌子(不幸的是我无法控制它)。我试图返回一个实体及其相关集合,如下所示:

from charity in context.Charities
join registration in context.Registrations on charity.RegisteredNumber equals registration.RegisteredNumber
join annualReturn in context.AnnualReturns on charity.RegisteredNumber equals annualReturn.RegisteredNumber
 select new { Charity = charity, Registration = registration, AnnualReturn = annualReturn}

这会返回一个慈善机构列表,其中包含相关注册(正确)。

然而,慈善机构有多个AnnualReturn,而这只会返回一个。{它可能是这个匿名对象中的集合吗?

我正在寻找的输出是:

{ Charity = singleCharity, Registration = singleRegistration, AnnualReturns = List<AnnualReturn>}

由于

2 个答案:

答案 0 :(得分:0)

让我们尝试一下......

from ar in context.AnnualReturns
group ar by annualReturn.RegisteredNumber into annualReturn
join charity in context.Charities 
                on annualReturn.Key equals charity.RegisteredNumber
join registration in context.Registrations 
                on charity.RegisteredNumber equals registration.RegisteredNumber
select new { Charity = charity, Registration = registration, AnnualReturn = annualReturn }

答案 1 :(得分:0)

也许这就是你要找的东西:

from charity in context.Charities
join registration in context.Registrations on charity.RegisteredNumber equals registration.RegisteredNumber
select new { Charity = charity, 
             Registration = registration,
             AnnualReturn = context.AnnualReturns.Where(at=>ar.RegisteredNumber==charity.RegisteredNumber)}