2009-04-21 21 views
2

Iはデータテーブルを返し、この機能がありますページ.SKIP(持つデータテーブル上のLINQ)と.Take()メソッド

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 

は、私は、データを表示するためにデータリストを持っています。それは動作しますが、私はページング機能を実装したいと思います。どうすればLinqの遅延読み込み機能を使うことができるのでしょうか?

ありがとうございました。

答えて

9

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

私は((currentPageに - 1)*がPageSize)この.SKIPを使用.Take(のPageSize)。 CopyToDataTable ありがとうございました。 –

関連する問題