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

时间:2009-04-21 03:15:38

标签: vb.net linq 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

在页面上,我有DataList来显示数据。它工作,但我想实现分页功能。我该怎么做才能使用Linq延迟加载功能?

感谢。

1 个答案:

答案 0 :(得分: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