【问题标题】:how to select distinct with paging in entity framework?如何在实体框架中选择不同的分页?
【发布时间】:2013-10-25 06:32:12
【问题描述】:

如何在实体框架中选择不同的分页? 我尝试在下面编写代码

 var ll = _ctx.Cwzz_AccVouchMain.Select(v => v.Ddate).Distinct();
        var l = ll.Skip(start).Take(limit).ToList();

但是错误: 必须在skip之前调用orderBy方法

但我的尝试

var ll = _ctx.Cwzz_AccVouchMain.Select(v => v.Ddate).Distinct();
        var l = ll.OrderBy(v => v.Year).ThenBy(v => v.Month).ThenBy(v => v.Date).Skip(start).Take(limit).ToList();

错误 ystem.NotSupportedException: LINQ to Entities 不支持“日期”类型。仅支持初始结算、实体成员、实体导航属性。

怎么办?

【问题讨论】:

    标签: entity-framework pagination sql-order-by distinct


    【解决方案1】:

    试试这个:

    var ll = _ctx.Cwzz_AccVouchMain.Select(v => v.Ddate).Distinct();
    var l = ll.OrderBy(v => v).Skip(start).Take(limit).ToList();
    

    当您尝试按年、月和日期排序时,您的查询尚未执行,当.ToList() 触发它时,它会尝试构建适当的 sql 查询,然后再将其发送到您的数据库服务器。但是,您的数据库对 Ddate.YearDdate.MonthDdate.Date 毫无头绪,因为在数据库方面,Ddate 字段是一个简单的日期,他不了解您的对象具有像 DateTime 这样的属性你在 C# 中使用。

    如果您只想按月订购(例如),则必须在此之前触发您的查询。

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多