EF返回汇总和非汇总数据

问题描述

| 给定下面的表结构,如何使用实体框架返回以下聚合和分组的字段。 必填项 分组: 用户名 用户名 汇总: 最大值(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)
            };