我可能无法很好地解释这一点,但现在…
我有一张类似的桌子:
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
我想获取此表中特定“foreign-key-id”的最大“a_号”,但同时返回记录的其余部分,以便从“some-other-in-info”列获取信息。
我发现我可以通过这样的查询来完成:
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()
编辑:或者更简洁的查询:
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()
尽管我不太确定如果一个外键ID有两个具有相同“a_号”值的记录(这在我所指的表中是可能的,我只需要取最近的一个)它将需要哪个记录。
在我的例子中,我相信会返回:
Id | Foreign_Key_Id | A_Number | Some_Other_Info
3 1 300 Orange
5 2 200 Yellow
6 3 100 Brown
似乎必须有一种更简单的方式来实现这一点(这使得查询比我提出的查询速度更快),我只是不知道怎么做。
提前谢谢。