C# 如何从DataTable C中每隔100行提取一次#

C# 如何从DataTable C中每隔100行提取一次#,c#,datagridview,datatable,C#,Datagridview,Datatable,我在Windows窗体应用程序上工作,我有一个包含1000行的DataTable,为了分页我的DataGridView,我从DataTable中获取前100条记录,如下所示 DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Take(100).CopyToDataTable(); DataTable rec=dt.Rows.Cast().OrderBy(x=>x[“RegNo”]).Take(10

我在Windows窗体应用程序上工作,我有一个包含1000行的DataTable,为了分页我的DataGridView,我从DataTable中获取前100条记录,如下所示

DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Take(100).CopyToDataTable();
DataTable rec=dt.Rows.Cast().OrderBy(x=>x[“RegNo”]).Take(100.CopyToDataTable();
我也试过这个

DataTable recc = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Take(100).Skip(100).CopyToDataTable();
DataTable recc=dt.Rows.Cast().OrderBy(x=>x[“RegNo”]).Take(100).Skip(100).CopyToDataTable();
问题: 当用户单击下一页时,如何从DataTable中获取下100条记录等等,您可以跳过并获取

DataTable rec = dt.Rows.Cast<DataRow>().OrderBy(x => x["RegNo"]).Skip(100).Take(100).CopyToDataTable();
DataTable rec=dt.Rows.Cast().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();
var currPage=1;
变量页大小=100;
var skip=当前页面*页面大小//如果100是页面大小。。。。。。
DataTable rec=dt.Rows.Cast().OrderBy(x=>x[“RegNo”]).Skip(Skip).Take(page_size).CopyToDataTable();
您可以使用
Skip()
Take()
函数。更好的选择是将页面索引和每页行数作为参数发送给函数:

DataTable rec = dt.Rows.Cast<DataRow>()
                       .OrderBy(x => x["RegNo"])
                       .Skip(rowsCount * pageIndex)
                       .Take(rowsCount)
                       .CopyToDataTable();
DataTable rec=dt.Rows.Cast()
.OrderBy(x=>x[“RegNo”])
.Skip(行搜索*页面索引)
.拿(划船)
.CopyToDataTable();