2012-02-09 34 views
0

我對LINQ很陌生,我已經搜索過了,但沒有其他q/a提供了完整的樣本。我需要LINQ查詢強類型IList<>對象,我必須:Linq的總和,訂單,組和頂部/收入

  1. 總和屬性
  2. 集團由物業
  3. 訂購我也心安
  4. 限制結果相同的屬性頂部2

例如,如果我的數據是這樣的:

Id | Customer | CartTotal 
------------------------------- 
1 |  a  |  100 
2 |  a  |  50 
3 |  b  |  110 
4 |  b  |  128 
5 |  c  |  75 
6 |  c  |  30 

我需要的結果是這樣的,我已經限制了它的上面2,按客戶分組,並做了CartTotal一筆:

Customer | CartTotal 
---------------------- 
    b  |  238 
    a  |  150 

什麼是解決這個問題的最好方法?

回答

1

這都是將正確的擴展方法鏈接在一起的問題。我們希望第一組由客戶 - GroupBy - 然後爲每個組項目的客戶和車的總金額 - Select,爲了通過車總金額下降 - OrderByDescending,最後取前2 - Take

var results = customerOrders.GroupBy(c=> c.Customer) 
          .Select(g=> new 
          { 
           Customer = g.Key, 
           CartTotal = g.Sum(x=>x.CartTotal) 
          }) 
          .OrderByDescending(x=> x.CartTotal) 
          .Take(2); 
1
var query = carts.GroupBy(c => c.Customer) 
       .Select(g => new { Customer = g.Key, Total = g.Sum(p => p.CartTotal)}) 
       .OrderByDescending(c => c.Total) 
       .Take(2);