Linq over DataTable与.Skip()和.Take()方法

Ang*_*Wat 2 linq vb.net datatable

我有这个函数返回一个DataTable:

Public Shared Function GetDataTable(ByVal PageSize As Integer, ByVal CurrentPagea As Integer) As DataTable

    Dim dtData As New DataTable
    dtData = da_Book_Content.GetDataContent()

    'TODO : how to do data paging for dtData with Linq 

    Return dtData

End Function
Run Code Online (Sandbox Code Playgroud)

在页面上,我有DataList来显示数据.它工作,但我想实现分页功能.我如何做到这一点,所以我能够使用Linq延迟加载功能?

谢谢.

Jos*_*lio 10

如果DataTable已经来自其他地方而不是LINQ2SQL,那么Lazy Loading就不会发挥作用.

但是,您可以使用LINQ2DataSets来利用Skip()和Take()扩展方法.

您需要添加对程序集的引用:System.Data.DataSetExtensions.dll然后您可以像这样编写函数:

Public Shared Function GetDataTable(ByVal PageSize As Integer, ByVal CurrentPagea As Integer) As DataTable    
    Dim dtData As New DataTable = da_Book_Content.GetDataContent()    
    Dim query = dtData.AsEnumerable().Skip(CurrentPage).Take(PageSize)    
    Return query.CopyToDataTable()
End Function
Run Code Online (Sandbox Code Playgroud)