我遇到一个简单的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
答案 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