2009-04-21 4 views
2

I diese Funktion haben, die eine Datentabelle zurückgibt:Linq über Datentabelle mit .skip() und .Nehmen() Methode

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 

Auf einer Seite, habe ich Datalist um die Daten anzuzeigen. Es funktioniert, aber ich möchte die Auslagerungsfunktion implementieren. Wie mache ich das, damit ich Linq Lazy Loading Feature verwenden kann?

Danke.

Antwort

9

Wenn die DataTable bereits von einem anderen Ort als LINQ2SQL kommt, kommt Lazy Loading nicht ins Spiel.

Sie können jedoch LINQ2DataSets verwenden, um die Erweiterungsmethoden Skip() und Take() zu nutzen.

Sie benötigen einen Verweis auf die Assembly hinzuzufügen: System.Data.DataSetExtensions.dll dann Sie Ihre Funktion wie folgt schreiben:

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 
+0

ich verwendet, um dieses .skip ((Current - 1) * Pagesize) .Nehmen (Pagesize). CopyToDataTable Vielen Dank. –

Verwandte Themen