如何从DataTable C中获取每下一行100#

时间:2015-03-07 14:14:13

标签: c# datagridview datatable

我正在使用Windows Form Application我有一个包含1000行的DataTable,对于我的DataGridView,我正在从DataTable中获取前100条记录

DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Take(100).CopyToDataTable();

我也试过这个

DataTable recc = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Take(100).Skip(100).CopyToDataTable();

问题: 当用户点击下一页等等时,如何从DataTable中获取下一条100条记录

2 个答案:

答案 0 :(得分:1)

你可以跳过并拍摄。

DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Skip(100).Take(100).CopyToDataTable();

您可以拥有一个跟踪当前页面的变量。

var currPage = 1;
var page_size = 100;
var skip = currPage * page_size; //if 100 is page size......

    DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Skip(skip).Take(page_size).CopyToDataTable();

答案 1 :(得分:1)

您可以使用Skip()Take()功能。更好的选择是将页面索引和每页行数作为参数发送到您的函数:

DataTable rec = dt.Rows.Cast<DataRow>()
                       .OrderBy(x => x["RegNo"])
                       .Skip(rowsCount * pageIndex)
                       .Take(rowsCount)
                       .CopyToDataTable();