2009-12-14 105 views
2

我在LINQ to SQL中有一個非常簡單的分組和聚集問題,我無法弄清楚,這讓我很生氣。Linq to SQL order by aggregate

我已經簡化到的東西這個例子:

一流的客戶{ 公衆的Guid標識; public String Name; }

class Order { public Guid Customer_Id; public double金額; }

我如何獲得按照訂單數量排列的客戶清單?他們購買的總金額是多少?

+0

哇...一些這些答案都是高度過於複雜。如果你願意,你可以通過鏈接幾個簡單的方法在一行中完成。 – 2009-12-14 11:37:50

回答

1
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; 
3
return dataContext.Customers.OrderBy(cust => cust.Orders.Count) 
    .ThenBy(cust => cust.Orders.Sum(order => order.Amount)) 
    .ToList(); 
0

通過訂單號:

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);