问题描述
|
给定下面的表结构,如何使用实体框架返回以下聚合和分组的字段。
必填项
分组:
用户名
用户名
汇总:
最大值(Order.OrderDate)
Count(Order.OrderId)
金额(付款金额)
Count(最近60天内所有订单的Order.OrderId)
金额(最近60天内所有订单的付款金额)
桌子
使用者:
用户名(PK)
姓氏
姓
订单:
OrderId(PK)
用户ID(FK)
订购日期
付款方式:
PaymentId(PK)
OrderId(FK)
支付金额
解决方法
DateTime last60Days = new DateTime(xxx,xxx,xxx);
var query = from u in context.Users
group u by new
{
u.Forename,u.Surname
} into ug
select new
{
Forename = ug.Key.Forename,Surname = ug.Key.Surname,MaxOrderdate = ug.SelectMany(x => x.Orders).Max(x => x.OrderDate),OrderCount = ug.SelectMany(x => x.Orders).Count(),Payment = ug.SelectMany(x => x.Orders.SelectMany(y => y.Payments)).Sum(x => x.PaymentAmount),OrderCountLast60 = ug.SelectMany(x => x.Orders).Where(x => x.OrderDate > last60Days).Count(),PaymentLast60 = ug.SelectMany(x => x.Orders.Where(x => x.OrderDate > last60Days).SelectMany(y => y.Payments)).Sum(x => x.PaymentAmount)
};