Linq集团通过不采取内部实体

use*_*579 6 c# linq entity-framework group-by

我正在使用实体框架并通过表格进行分组.我的查询如下: -

var brokerPaymentLists = dbContext.BrokerPayments
    .Include("PaymentDetail")
    .Where(bp => bp.IdPaymentStatus == (long)EntityModel.Additions.Variables.PaymentStatus.ALLOTED)
    .GroupBy(bp => bp.IdBroker,
    (key, g) => new
    {
        IdBroker = key.Value,
        BrokerPayments = g.ToList()
    }).ToList();
Run Code Online (Sandbox Code Playgroud)

我已经包含了PaymentDetail但在分组之后,我可以看到BrokerPayments中每个项目的paymentdetail为null.任何建议为什么会这样,我怎么能这样做,我可以我的paymentDetail insisde每个BrokerPayments;

kal*_*sov 1

使用急切加载要求数据的形状自应用Include以来不发生改变。Include在您的情况下,这意味着查询必须返回IQueryable<BrokerPayments>. 但是GroupBy操作符改变了形状,因为它返回了IQueryable<IGrouping<TKey,\xe2\x80\x82TSource>>。投影和自定义连接也会发生同样的情况。

\n\n

作为解决方法,您可以在 LINQ to Objects 中执行分组,例如:

\n\n
var brokerPaymentLists = dbContext.BrokerPayments\n    .Include("PaymentDetail")\n    .Where(bp => bp.IdPaymentStatus == (long)EntityModel.Additions.Variables.PaymentStatus.ALLOTED)\n    .AsEnumerable()\n    .GroupBy(bp => bp.IdBroker,\n    (key, g) => new\n    {\n        IdBroker = key.Value,\n        BrokerPayments = g\n    });\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:注意查询执行不会被延迟

\n