我正在使用 Entity Framework 并通过表格进行分组。我的查询如下:-
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();
我已经包含了 PaymentDetail,但是在分组之后,我可以看到 BrokerPayments 中每个项目的 paymentdetail 都是空的。关于为什么会出现这种情况的任何建议,以及我如何进行分组,以便我可以在每个 BrokerPayment 中插入我的付款详细信息;
最佳答案
使用 Include
进行预加载要求数据的形状自 Include
以来不改变被申请;被应用。在您的情况下,这意味着查询必须返回 IQueryable<BrokerPayments>
.但是 GroupBy
运算符更改形状,因为它返回 IQueryable<IGrouping<TKey, TSource>>
.投影和自定义连接也会发生同样的情况。
作为解决方法,您可以在 LINQ to Objects 中执行分组,例如:
var brokerPaymentLists = dbContext.BrokerPayments
.Include("PaymentDetail")
.Where(bp => bp.IdPaymentStatus == (long)EntityModel.Additions.Variables.PaymentStatus.ALLOTED)
.AsEnumerable()
.GroupBy(bp => bp.IdBroker,
(key, g) => new
{
IdBroker = key.Value,
BrokerPayments = g
});
注意:注意查询不会延迟执行
关于c# - Linq Group 通过不采用内部实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379916/