Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用linq进行数据列表分页_Asp.net_Linq_Datalist - Fatal编程技术网

Asp.net 使用linq进行数据列表分页

Asp.net 使用linq进行数据列表分页,asp.net,linq,datalist,Asp.net,Linq,Datalist,我正在创建一个使用LINQ进行数据访问的页面,并使用DataList显示数据。如何使用Linq进行数据分页?请阅读下面的简单代码: 我通常使用PagedDatasource,但这似乎只适用于DataTable 下面是我的Linq返回与Datalist绑定的Datatable: 作为DataTable的公共共享函数GetStudentList() Dim db As New DemoDataClassesDataContext() Dim query = From st In d

我正在创建一个使用LINQ进行数据访问的页面,并使用DataList显示数据。如何使用Linq进行数据分页?请阅读下面的简单代码:

我通常使用PagedDatasource,但这似乎只适用于DataTable

下面是我的Linq返回与Datalist绑定的Datatable:

作为DataTable的公共共享函数GetStudentList()

    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
您需要了解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
变量作为方法的参数。(您不希望将它们构建到数据访问中,因为它们可能在站点的不同部分有所不同……

如何确定数据是否已达到最大限制,即我们在最后一页?通过一些组合进行了工作。现在它对我起作用了。谢谢你的回答:)