在具有指定Id的元素之后从Query获取下一个元素.无法翻译LINQ表达式



我需要确保在进行特定排序后,使用当前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();

相关内容

最新更新