基本的Linq和命令

时间:2013-10-09 22:03:18

标签: vb.net linq linq-to-sql

我遇到一个简单的linq查询问题。

例如,我有一个包含两列的MS sql表。姓名和日期

在此表中大约有3行。

行的示例

Name          Date
SalesReport   10/1/2013
SalesReport   10/2/2013
Tax Report    10/2/2013

我希望我的linq查询按“名称”分组,但按日期排序,因此分组字段的最新日期和结果看起来像

Name          Date
SalesReport   10/2/2013
TaxReport     10/2/2013

这是我正在使用的代码,但它不会通过正确的顺序。无论我是否更改升序或降序属性,我总是得到相同的日期。

Dim List = From w In db.reports
                Order By w.Date Descending
                Group By Name = w.Name Into g = Group
                Select g

1 个答案:

答案 0 :(得分:2)

您遇到的主要问题是,您实际上并未正确地按最大日期对数据进行分组。您当前Order By正在做的就是在 中将数据排序到分组中,而不是在出路时。

您需要做的是使用分组操作数据,并返回名称和最大日期(就像使用SQL GROUP BY子句一样):

Dim List = From w In db.reports
            Group w By Name = w.Name Into g = Group
            Select Name = Name, [Date] = g.Max(Function(p) p.Date)
            Order By Name