Linq поверх DataTable с помощью методов .Skip () и .Take () - PullRequest
2 голосов
/ 21 апреля 2009

У меня есть эта функция, которая возвращает 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 Ответ

10 голосов
/ 21 апреля 2009

, если 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...