实体框架 - 通过跳过组来分组

时间:2017-01-12 13:05:45

标签: 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)
            .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();

有谁知道如何解决这个问题?

0 个答案:

没有答案