使用DataTable进行LINQ和分页 - 无法使Skip工作?

Kit*_*nke 4 c# linq datatable

好的,这可能是一个愚蠢的问题,但我似乎无法弄明白.我以为我会针对DataTable尝试LINQ.我的查询工作正常,现在我正在尝试实现一些简单的分页.

DataTable dataTable = null;

dataTable = GetAllDataTables();

var query = from r in dataTable.AsEnumerable()
            orderby r.Field<string>(Constants.fileName)
            select r;

query.Skip(WPP_PAGE_SIZE * pageIndex).Take(WPP_PAGE_SIZE);
Run Code Online (Sandbox Code Playgroud)

我的问题是我在query.Skip(...)收到错误.

错误1'System.Data.OrderedEnumerableRowCollection'不包含'Skip'的定义,并且没有扩展方法'Skip'接受类型'System.Data.OrderedEnumerableRowCollection'的第一个参数可以找到(你是否缺少using指令或者装配参考?)

参考资料我有:

  • Microsoft.SharePoint程序
  • 系统
  • System.Core程序
  • System.Data
  • System.Data.DataSetExtensions
  • 的System.Web
  • 的System.Xml

我错过了什么?

Mar*_*ers 7

您需要using System.Linq;在文件的顶部.

第二个问题是您需要将Skip和Take的结果分配给某些内容,否则结果将被丢弃:

var query2 = query.Skip(WPP_PAGE_SIZE * pageIndex).Take(WPP_PAGE_SIZE);
Run Code Online (Sandbox Code Playgroud)