1
我可能就無法解釋這個還不錯,但這裏有雲......LINQ分組:選擇行而不是密鑰?
我有一個類似的表:
Id | Foreign_Key_Id | A_Number | Some_Other_Info
1 1 100 Red
2 1 200 Blue
3 1 300 Orange
4 2 100 Green
5 2 200 Yellow
6 3 100 Brown
我想要得到的最大「A_Number」對於此表中的特定「Foreign_Key_Id」,還要返回記錄的其餘部分,以便從「Some_Other_Info」列中獲取信息。
我發現我可以通過這樣的查詢做到這一點:雖然我不能肯定它記錄
from x in This_Table
group x by x.Foreign_Key_Id into g
let maxANumber = g.Max(x => x.A_Number)
orderby maxANumber descending
select g.Where(x => x.A_Number == maxANumber).First()
:
from x in This_Table
group x by x.Foreign_Key_Id into g
orderby g.Max(x => x.A_Number) descending
select g.Where (x => x.Foreign_Key_Id == g.Key).OrderByDescending (x => x.A_Number).First()
編輯:或者,也許這更簡潔查詢如果一個Foreign_Key_Id具有兩個具有相同「A_Number」值的記錄(這在我所指的表中是可能的,那麼我只需要取最近的一個)。
我相信這在我的例子將返回:
Id | Foreign_Key_Id | A_Number | Some_Other_Info
3 1 300 Orange
5 2 200 Yellow
6 3 100 Brown
好像必須有一種方式,更簡單的方式來做到這一點(這使得比我想出了一個更快的查詢),我只是無法弄清楚如何。
在此先感謝。
謝謝。比我醜陋的解決方案更簡潔。 – Ocelot20 2010-07-26 14:28:46