我需要确保在进行特定排序后,使用当前ID作为输入参数,在Query中获得当前元素之后的元素。我正在使用EF Core,并试图构建这样一个查询:
int id = {any id from input}
var result = query.OrderByDescending(x => somelist.Contains(a.Id))
.ThenByDescending(x => x.Date).SkipWhile(x => x.Id == id).ElementAt(1);
但出现以下错误
LINQ表达式的DbSet((。。。无法翻译。以可翻译的形式重写查询
如何重写?
查询的一般描述
根据id查找元素,并根据特定顺序返回其后续元素。
如果我正确理解这个问题,您需要以下查询:
var previousIds = ...
var result = query
.OrderByDescending(x => somelist.Contains(a.Id))
.ThenByDescending(x => x.Date)
.ThenBy(x => x.Id)
.Where(x => !previousIds.Contains(x.Id))
.FirstOrDefault();