Linq to sql Linq到SQL按聚合排序

Linq to sql Linq到SQL按聚合排序,linq-to-sql,aggregate,Linq To Sql,Aggregate,在LINQtoSQL中,我有一个非常简单的分组和聚合问题,我就是搞不懂,这让我抓狂 我将事情简化为以下示例: 类客户{ 公共Guid Id; 公共字符串名称; } 阶级秩序{ 公共Guid客户Id; 公共双倍金额; } 如何根据客户的订单数量获取客户订单列表?以及根据订单数量,他们购买的总金额: return dataContext.Customers.OrderBy(cust => cust.Orders.Count) .ThenBy(cust => cust.Orders

在LINQtoSQL中,我有一个非常简单的分组和聚合问题,我就是搞不懂,这让我抓狂

我将事情简化为以下示例:

类客户{ 公共Guid Id; 公共字符串名称; }

阶级秩序{ 公共Guid客户Id; 公共双倍金额; }

如何根据客户的订单数量获取客户订单列表?以及根据订单数量,他们购买的总金额:

return dataContext.Customers.OrderBy(cust => cust.Orders.Count)
    .ThenBy(cust => cust.Orders.Sum(order => order.Amount))
    .ToList();
var customers = (from c in db.Customers
                 select new 
                  {
                    c.Name, 
                    OrderCount = c.Orders.Count()
                  }).OrderBy(x => x. OrderCount);
按购买总额计算:

var customers = (from c in db.Customers
                 select new 
                  {
                    c.Name, 
                    Amount = (from order in c.Orders
                              select order.Amount).Sum()
                  }).OrderBy(x => x.Amount);

哇!其中一些答案过于复杂。如果您愿意,您可以通过链接几个简单的方法在一行中完成这项工作。
var qry1 = from c in db.Customers
           join o in db.Orders on c.Id equals o.Customer_Id into orders
           orderby orders.Count()
           select c;

var qry2 = from c in db.Customers
           join o in db.Orders on c.Id equals o.Customer_Id into orders
           orderby orders.Sum(o => o.Amount)
           select c;