我需要编写一个返回单个记录的查询,该记录将是具有提供 ID 的记录中的下一条记录。
var x = GetNextRecord(int recordId);
问题是数据不是按 ID 排序的,而是按其他一些标准排序的。查询示例:
SELECT * FROM SomeTable
WHERE conditions
ORDER BY column1, column2, column3
例如,此查询返回 25 条记录。假设在此结果集中,ID=42 的记录是第 7 条记录。这意味着我们需要返回第 8 条记录。
等效的 Linq 将是
list.OrderBy(x => x.a)
.ThenBy(x => x.b)
.ThenBy(x=> x.c)
.SkipWhile(x => x.Id != id) // we skip records until we arrive to the record with given Id
.Take(2) // we take the next two records (current and the next one)
.LastOrDefault() // and finally we take the last one, which is our next record;
但是,此查询不适用于 linq to entity,那么 L2E(或 EntitySQL)中的等价物是什么?