第一种方式:

```csharp

public DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)

{

if (PageIndex == 0)

return dt; // 0页代表每页数据,直接返回

DataTable newdt = dt.Copy();

newdt.Clear(); // copy dt的框架

int rowbegin = (PageIndex - 1) * PageSize;

int rowend = PageIndex * PageSize;

if (rowbegin >= dt.Rows.Count)

return newdt; // 源数据记录数小于等于要显示的记录,直接返回dt

if (rowend > dt.Rows.Count)

rowend = dt.Rows.Count;

for (int i = rowbegin; i <= rowend - 1; i++)

{

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;

}

```

第二种方式:

```csharp

public DataRow[] GetTableRows(DataTable dtAllEas, int PageIndex, int PageSize)

{

var rows = dtAllEas.AsEnumerable(); // 将DataTable转换为IEnumerable

var curRows = rows.Skip(PageIndex).Take(PageSize).ToArray(); // 获取当前页的行数据

}

```