5

Linqforデータアクセスを使用するページを作成しており、DataListを使用してデータを表示しています。Linqを使用してデータページングを行うにはどうすればよいですか?以下の簡単なコードをお読みください:

私は通常PagedDatasourceを使用していますが、これはDataTableでのみ機能するようです。

これが、DatalistにバインドされているDatatableを返すためのLinqです。

パブリック共有関数GetStudentList()As DataTable

    Dim db As New DemoDataClassesDataContext()

    Dim query = From st In db.students _
                Order By st.st_studentid Ascending _
                Select st

    Dim dtStudent = New DataTable("myst")


    dtStudent.Columns.Add("st_id", GetType(Integer))
    dtStudent.Columns.Add("st_userid", GetType(Guid))
    dtStudent.Columns.Add("st_studentid", GetType(Integer))
    dtStudent.Columns.Add("st_firstname", GetType(String))
    dtStudent.Columns.Add("st_lastname", GetType(String))
    dtStudent.Columns.Add("st_gender", GetType(String))
    dtStudent.Columns.Add("st_email", GetType(String))


    For Each q In query
        dtStudent.Rows.Add(New Object() {q.st_id, q.st_userid, q.st_studentid, q.st_firstname, q.st_lastname, q.st_gender, q.st_email})
    Next

    Return dtStudent

End Function

ページの後ろのコード:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack() Then
        LoadData()
    End If

End Sub

Private Sub LoadData()
    dsStduent = da_Student.GetStudentList()
    dt_Student.DataSource = dsStduent
    dt_Student.DataBind()

End Sub
4

2 に答える 2

8

.Skip()メソッドと.Take()メソッドは非常に便利です。

プロジェクトからいくつかのコードを提供していることに気づいたので、これらのメソッドを実装する方法に関する最新情報を以下に示します。

データを取得する方法で、次の手順を実行します。

Dim query = (From st In db.students _
            Order By st.st_studentid Ascending _
            Select st).Skip((CurrentPage - 1) * PageSize).Take(PageSize)

次に、メソッドへの引数として変数CurrentPageと変数を指定します。PageSize(サイトのさまざまな部分で異なる可能性があるため、データアクセスに組み込む必要はありません...)

于 2009-04-18T22:42:30.880 に答える
2

Skip()メソッドとTake()メソッドを使用して、LINQでSQLページングを確認する必要があります。

于 2009-04-18T22:40:41.243 に答える