【发布时间】:2016-08-11 10:00:36
【问题描述】:
我一直在寻找一种方法来获取多个列,但在 SQL 中仅按一个列分组,我找到了一些信息。但是我无法想出在 linq 中执行此操作的方法。
我有以下玩具示例表:
| Id | Message | GroupId | Date |
|-------------------------------|
| 1 | Hello | 1 | 1:00 |
| 2 | Hello | 1 | 1:01 |
| 3 | Hey | 2 | 2:00 |
| 4 | Dude | 3 | 3:00 |
| 5 | Dude | 3 | 3:01 |
我想恢复具有不同 GroupId 的行的所有列,如下所示(使用“日期”降序顺序):
| Id | Message | GroupId | Date |
|-------------------------------|
| 1 | Hello | 1 | 1:00 |
| 3 | Hey | 2 | 2:00 |
| 4 | Dude | 3 | 3:00 |
我并不真正关心从分组的行(第一,第二...)中选择哪一行,只要是给定该组 ID 的唯一行。
到目前为止,我已经提出了以下代码,但它没有做应该做的事情:
List<XXX> messages = <MyRep>.Get(<MyWhere>)
.GroupBy(x => x.GroupId)
.Select(grp => grp.OrderBy(x => x.Date))
.OrderBy(y => y.First().Date)
.SelectMany(y => y).ToList();
【问题讨论】:
标签: c# sql-server entity-framework linq