.net – Linq&Paging – 无法使用OrderBy返回分页数据

前端之家收集整理的这篇文章主要介绍了.net – Linq&Paging – 无法使用OrderBy返回分页数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在尝试在我编写的WCF服务上实现一个简单的分页系统,该服务使用 Linq To sql查询数据库,但似乎是从一个问题转到另一个问题.

我希望WCF服务返回此类型的列表:

[DataContract]
public class TestType
{
    [DataMember]
    public int ID { get; set; }
    [DataMember]
    public string Name { get; set; }
}

我正在使用以下代码

int pageNumber = 0;
int pageSize = 25;

List<TestType> results = (from caseTypes in context.cch
                          select new TestType()
                          {
                              ID = caseTypes.cch_id,Name = caseTypes.cch_case_ref
                          }                               
                          ).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList<TestType>();

但是,当我运行代码时,我收到错误

The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'.

所以,如果我更改代码添加orderby:

List<TestType> results = (from caseTypes in context.cch
                          orderby caseTypes.cch_id
                          select new TestType()
                          {
                               ID = caseTypes.cch_id,Name = caseTypes.cch_case_ref
                          }                               
                          ).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList<TestType>();

然后,我会收到错误消息:

Count must have a non-negative value.
Parameter name: count

我甚至以正确的方式接近这个分页

解决方法

您将页码初始化为0,因此-1是它正在抱怨的跳过参数.将页面初始化为1.

猜你在找的MsSQL相关文章