Linq Query Datatable和Group by multiple columns

时间:2014-04-15 21:44:05

标签: c# sql vb.net linq datatable

假设我在数据库查询的内存中加载了以下数据:

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中创建它并使用(过滤的)结果返回一个新的数据表?

1 个答案:

答案 0 :(得分:0)

点击此链接LINQ for RANK() and CASE WHEN in VB.NET以及显示日期汇总的子链接:Linq To Sql vb.net assistance