【问题标题】:Getting last records of every distinct value of a column获取列的每个不同值的最后记录
【发布时间】:2020-06-30 21:05:39
【问题描述】:

我有一个这样的消息表:

Id     Message     Column1
--------------------------
1      asdasdd     1
2      dsfsfsf     1
3      safsafs     2
4      afewfff     3
5      adw qwd     2

我想通过以下代码获取 Column1 上每个不同值的最后记录,这意味着第 2、4 和 5 行:

Messages.OrderByDescending(a => a.Id).GroupBy(a => a.Column1).Select(a => a.Key).ToList();

我只需要行的 id,但没有任何返回。我已经用 sql 完成了,但无法转换为 EF lambda。

select max(Id) as Id from [Messages]
group by Column1
order by Id DESC

【问题讨论】:

标签: c# entity-framework


【解决方案1】:

您正在选择key,在group by 中表示您正在对值进行分组的column1。按照您的预期获取值的一种方法是尝试以下方法:

var query = Messages.GroupBy(item => item.Column1).Select(group =>   group.Last().Id)
        .OrderBy(item => item.Id)
        .Select(a => a.Id)
        .ToList();

或者获取完整的行:

var query = Messages.GroupBy(item => item.Column1)
        .Select(group => group.Last())
        .OrderBy(item => item.Id)
        .Select(a => a)
        .ToList();

【讨论】:

猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2017-01-04
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2016-03-23
相关资源
最近更新 更多