在C#中,我们可以使用DataTable来实现分页。以下是一个示例方法,该方法接收一个DataTable、页码(PageIndex)和每页的记录数(PageSize),然后返回一个包含分页后数据的DataTable。

```csharp

using System;

using System.Collections.Generic;

using System.Data;

public class DataTablePagination

{

public static DataTable GetPagedTable(DataTable dt, int pageIndex, int pageSize)

{

if (pageIndex == 0) return dt; // 0页代表每页数据,直接返回

DataTable newDt = dt.Copy(); // 复制原始DataTable

newDt.Clear(); // 清除新DataTable的索引

int startRowIndex = (pageIndex - 1) * pageSize; // 计算起始行索引

int endRowIndex = Math.Min(startRowIndex + pageSize, dt.Rows.Count); // 计算结束行索引

if (startRowIndex >= dt.Rows.Count) return newDt; // 如果起始行索引大于等于总行数,则直接返回新的空DataTable

if (endRowIndex > dt.Rows.Count) endRowIndex = dt.Rows.Count; // 如果结束行索引大于总行数,则设置为总行数

for (int i = startRowIndex; i <= endRowIndex - 1; i++) // 遍历并添加数据行到新的DataTable中

{

DataRow newDr = newDt.NewRow();

DataRow dr = dt.Rows[i];

foreach (DataColumn column in dt.Columns)

{

newDr[column.ColumnName] = dr[column.ColumnName];

}

newDt.Rows.Add(newDr);

}

return newDt; // 返回分页后的DataTable

}

}

```

使用此方法时,只需将原始DataTable、所需的页码和每页的记录数作为参数传递即可。例如:

```csharp

DataTable originalDt = new DataTable();

// 填充originalDt的数据...

int pageIndex = 2; // 获取第2页数据,假设每页有5条记录

int pageSize = 5; // 每页5条记录

DataTable paginatedDt = DataTablePagination.GetPagedTable(originalDt, pageIndex, pageSize); // 获取分页后的DataTable

```