【问题标题】:Linq over DataTable with .Skip() and .Take() method使用 .Skip() 和 .Take() 方法对 DataTable 进行 Linq
【发布时间】:2010-10-20 17:34:04
【问题描述】:

我有这个返回 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 延迟加载功能?

谢谢。

【问题讨论】:

    标签: vb.net linq datatable


    【解决方案1】:

    如果 DataTable 已经来自其他地方而不是 LINQ2SQL,则延迟加载不会发挥作用。

    但是,您可以使用 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
    

    【讨论】:

    • 我用过这个 .Skip((CurrentPage - 1) * PageSize).Take(PageSize).CopyToDataTable 非常感谢。
    猜你喜欢
    • 2012-01-18
    • 2011-03-04
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2013-11-26
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多