【发布时间】:2020-05-20 10:09:33
【问题描述】:
我有一张这样的桌子
Id Date GroupId Text Column1 Column2 ...
1 2020-02-02 1 .... .... ...
2 2020-02-04 1 .... .... ...
3 2020-02-03 1 .... .... ...
4 2020-02-02 2 .... .... ...
5 2020-02-05 2 .... .... ...
我需要得到这个结果:
Id Date GroupId Text Column1 Column2 ...
5 2020-02-05 2 .... .... ...
4 2020-02-02 2 .... .... ...
1 2020-02-02 1 .... .... ...
3 2020-02-03 1 .... .... ...
2 2020-02-04 1 .... .... ...
我解释说我需要在第 2 组的所有行之前获取,因为最大日期在第 2 组中...我需要按日期降序对组进行排序,但每个组都应按日期升序排序。
我发现用 sql 也很难写。任何人都可以帮助我吗? 谢谢
编辑: 这是我尝试做的事情:
var result = messages.Select(m => new MyViewModel()
{
Id = m.Id,
Date = m.Date,
Text = m.Text,
GroupId = m.GroupId
}).GroupBy(d => d.GroupId)
.SelectMany(g => g)
.OrderByDescending(x => x.GroupId)
.ThenBy(x => x.Date);
但它不起作用
【问题讨论】:
-
到目前为止你尝试了什么?
-
数据库是什么?
-
sql server 2012
-
您可以使用
Linq并将其分成两部分 - 获取最大日期和排序
标签: c# sql sql-server linq entity-framework-6