日期:2014-05-20  浏览次数:20994 次

linq分页问题
使用linq 分页是的时候当到第二页的时候就报错。错误信息
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.NotSupportedException: 此提供程序只支持对返回实体或投影(包含所有标识列)的有序查询使用 Skip(),这种查询为单表(非联接)查询,或者为 Distinct、Except、Intersect 或 Union (非 Concat)操作。
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.VisitSelect(SqlSelect select)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.VisitSelect(SqlSelect select)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.VisitSelect(SqlSelect select)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.VisitSelect(SqlSelect select)
  在 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.SingleTableQueryVisitor.Visit(SqlNode node)
  在 System.Data.Linq.SqlClient.QueryConverter.GenerateSkipTake(SqlSelect sequence, SqlExpression skipExp, SqlExpression takeExp)
  在 System.Data.Linq.SqlClient.QueryConverter.VisitTake(Expression sequence, Expression count)
  在 System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
  在 System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
  在 System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
  在 System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node)
  在 System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
  在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
  在 System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
  在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
  在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
  在 kltz.zxzd.insfyf.dal.NEWS_REFER_VIEWDAL.getnewsbycontation(Int32 pagesize, Int32 pageindex, Int32& totalcount) 位置 \\192.168.1.92\d$\infsysAspNet\kltz.zxzd.insfyf.dal\NEWS_REFER_VIEWDAL.cs:行号 21
  在 kltz.zxzd.insfyf.bll.NEWS_REFER_VIEWBLL.getnewsbycontation(Int32 pagesize, Int32 pageindex, Int32& totalcount) 位置 \\192.168.1.92\d$\infsysAspNet\kltz.zxzd.insfyf.bll\NEWS_REFER_VIEWBLL.cs:行号 17
  在 Service.HelloWorld(Int32 pagesize, Int32 pageindex, Int32& totalcount)
  --- 内部异常堆栈跟踪的结尾 --- 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

我的源码: infsysdb.NEWS_REFER_VIEW.Where(p => p.SmallClassName == "政策内线").OrderByDescending(p => p.NewsID).Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();


数据库使用的是sqlserver 2000 但是我在infsysDB.designer.cs 文件中将视图中做了主键设置
public partial class NEWS_PRESS_VIEW
{

private System.Nullable<System.Guid> _GUID;

private int _NEWSID;

private string _BIGCLASSNAME;

private string _SMALLCLASSNAME;

private string _TITLE;

private string _CORP;

private string _AUTHOR;