使用group BY检索组中的最新行



我正在尝试检索基于CreatedDate字段的组中的最新行。

如何为EF Core 5重写这个查询,而不会抛出这个异常?

"。OrderByDescending (s =比;s.CreatedDate)'无法翻译。要么以可翻译的形式重写查询,要么通过插入对"AsEnumerable"的调用显式地切换到客户端评估?

插入AsEnumerable可以,但这将是一个糟糕的解决方案。

var entries = _dbContext.MyTable
.GroupBy(s => s.Something)
.Select(g => g.OrderByDescending(s => s.CreatedDate).First())
.ToListAsync();

更快的解决方案是通过ROW_NUMBER函数。但是你可以创建一个变通方法:

var mainQuery = _dbContext.MyTable;
var query =     
from d in mainQuery.Select(s => new {s.Something}).Distinct()
from x in mainQuery.Where(x => x.Something == d.Something)
.OrderByDescending(x.CreateDate)
.Take(1)
select x;
var result = await query.ToListAsync();

相关内容

  • 没有找到相关文章