我有以下查询:
var enumerable = repository.Elemtents.Where((s) =>
DbFunctions.TruncateTime(s.Timestamp) <= parameter.To.Date &&
DbFunctions.TruncateTime(s.Timestamp) >= parameter.From.Date)
.OrderByDescending((s) => s.Timestamp)
.GroupBy((s) => new {Date = DbFunctions.TruncateTime(s.Timestamp), s.Timestamp.Hour})
.OrderByDescending((s) => s.Key.Date);
我现在想要使用Skip()和Take()应用分页。在我的表(协议条目)中可以有大量数据。所以我可以做以下几点,但这将是一种性能缺乏。
var result = enumerable
.ToList()
.SelectMany((x) => x)
.Skip(0)
.Take(2);
我想直接对查询应用Skip()和Take(),以便在sql server上完成。如果我执行以下操作,我会得到奇怪的结果:
var result = repository.Elemtents.Where((s) =>
DbFunctions.TruncateTime(s.Timestamp) <= parameter.To.Date &&
DbFunctions.TruncateTime(s.Timestamp) >= parameter.From.Date)
.OrderByDescending((s) => s.Timestamp)
.GroupBy((s) => new {Date = DbFunctions.TruncateTime(s.Timestamp), s.Timestamp.Hour})
.OrderByDescending((s) => s.Key.Date)
.Skip(0)
.Take(2)
.ToList();
有谁知道如何解决这个问题?