我需要编写一个返回单个记录的查询,这条记录将是带有提供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一起使用到实体,那么L2E(或EntitySQL)中的等价物是什么?