我正在尝试检索基于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();