C# 实体框架-通过跳过组使用组进行分页
我有以下疑问:C# 实体框架-通过跳过组使用组进行分页,c#,entity-framework,linq,linq-to-entities,C#,Entity Framework,Linq,Linq To Entities,我有以下疑问: var enumerable = repository.Elemtents.Where((s) => DbFunctions.TruncateTime(s.Timestamp) <= parameter.To.Date && DbFunctions.TruncateTime(s.Timestamp) >= parameter.From.Date) .Order
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(),以便在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();
var result=repository.Elemtents.Where((s)=>
DbFunctions.TruncateTime(s.Timestamp)=参数.From.Date)
.OrderByDescending((s)=>s.Timestamp)
.GroupBy((s)=>new{Date=DbFunctions.TruncateTime(s.Timestamp),s.Timestamp.Hour})
.OrderByDescending((s)=>s.Key.Date)
.Skip(0)
.采取(2)
.ToList();
有人知道如何解决这个问题吗?你是说我会得到奇怪的结果?你是想跳过/参加小组吗?我这样问是因为你的
ToList
示例没有这样做。@IvanStoev是的,我想跳过/获取组。@m.Wiśnicki日期值类似于4093\01\01你的“直接”查询对我来说很好(.OrderByDescending((s)=>s.Timestamp)
是多余的,但无论如何都会被忽略)。EF6.1.3,MSSQL。
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();