2011-07-06 37 views
2

我在想如何選擇使用linq的稱爲出價的表中的領先出價。LINQ按特定列中每個唯一值的最高值進行排序

結果需要採取的每一個唯一的用戶ID和顯示的最高出價下令由BIDVALUE

投標表:

bidId 1, userid 1, bidValue = 10 
bidId 2, userid 2, bidValue = 20 
bidId 3, userid 3, bidValue = 20 
bidId 4, userid 1, bidValue = 30 
bidId 5, userid 2, bidValue = 40 
bidId 6, userid 1, bidValue = 50 

結果:

bidId 6, userid 1, bidValue 50 
bidId 5, userid 2, bidValue 40 
bidId 3, userid 3, bidValue 20 
+0

我認爲你的第二行應該是userid 2? – Dismissile

+0

是的,對不起。修復了 –

+0

[LINQ - 使用distinct和orderby編寫查詢](http://stackoverflow.com/questions/1235604/linq-writing-a-query-with-distinct-and-orderby) – msarchet

回答

2

像這樣的東西應該工作

var query = (from bid in context.Bids 
      group bid by bid.userid into bidg 
      select new 
      { 
       bidId = bidg.OrderByDescending(b => b.bidValue).First().bidid, 
       userid = bidg.Key, 
       bidValue = bidg.Select(b => b.bidValue).Max() 
      }).OrderByDescending(b => b.bidvalue); 
+0

可能出現在結果示例中,訂單是由用戶ID –

+0

我可能是錯的,但我讀它的方式不同。我以爲他想要它通過bidValue訂購 – Aducci

+0

對不起,你說的對, –

相關問題