假设我在数据库查询的内存中加载了以下数据:
Col_A: Col_B: Col_C: Col_D: Date1: Date2:
a1 b1 c1 d1 Dt1_1 Dt2_1
a1 b2 c2 d2 Dt1_1 Dt2_2
a1 b3 c3 d3 Dt1_1 Dt2_3
a1 b4 c4 d4 Dt1_2 Dt2_4
a1 b5 c5 d5 Dt1_2 Dt2_5
并且,就日期而言,假设,例如,“_ 1”< “_2”。
因此,对于Col_A
中的每个值,我想要的是为最早的Date1
为每个Date2
获取一行。
所以,鉴于这些数据,我想回来:
Col_A: Col_B: Col_C: Col_D: Date1: Date2:
a1 b1 c1 d1 Dt1_1 Dt2_1
a1 b4 c4 d4 Dt1_2 Dt2_4
换句话说,由于Date1
已更改,我们会获取最早Date2
的数据。
我希望这是有道理的。
在SQL中,我想象查询如下:
SELECT Col_A, Col_B, Col_C, Col_D, Date1, Date2,
RANK() OVER(PARTITION BY Col_A, Date1 ORDER BY Date2) as RN
FROM MyTable
WHERE RN = 1
ORDER BY Col_A, Date1, Date2
但是我如何在Linq中创建它并使用(过滤的)结果返回一个新的数据表?
答案 0 :(得分:0)
点击此链接LINQ for RANK() and CASE WHEN in VB.NET以及显示日期汇总的子链接:Linq To Sql vb.net assistance