从DataTable中选择第二组20行

本文关键字:二组 20行 DataTable 选择 | 更新日期: 2023-09-27 17:57:55

我有一个DataTable,我正在从SQL表中填充以下示例列

  • ID
  • 类型
  • 价值

我正在用特定类型的行填充DataTable。我想从我得到的DataTable:中选择第10-20行

Connect conn = new Connect();
SqlDataAdapter da = new SqlDataAdapter(SQL, conn.Connection());
//Creates data
DataTable d = new DataTable();
da.Fill(d);
DataRow[] result = d.Select();

在上面的代码中,我省略了主SQL,目前我没有选择DataRow数组。我找不到引用行号的方法。

例如,我正在寻找类似Select("rownum > X && rownum < Y") 的东西

我在这里搜索过,其他一些资源都没有用。任何线索都会非常方便,或者只是一个简单的不可能。

从DataTable中选择第二组20行

最好只从数据库中选择您需要的内容(例如,使用TOP子句或类似ROW_NUMBER的窗口函数),而不是在内存中过滤它。

但是,您可以使用Linq-To-DataSetEnumerable.Skip+Enumerable.Take:

var rows = d.AsEnumerable()
    .Skip(9).Take(11);  // select rows 10-20 as desired (so you want 11 rows)

如果您希望从筛选结果中获得新的DataTable,请使用CopyToDataTable;如果您希望获得DataRow[],请使用rows.ToArray()

我只需要执行'take'和'skip'命令并保持简单:

 d.Select().Skip(10).Take(10);  // skips 10 rows, then selects ten after that.

这将假设您有Linq使用集(使用System.Linq)