从DataTable中选择第二组20行

时间:2013-02-05 21:51:49

标签: c# select datatable

我有一个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")

这样的东西

我在这里搜索了一些其他资源无济于事。任何线索都非常方便,或者只是简单的不可能。

2 个答案:

答案 0 :(得分:15)

最好只从数据库中选择所需内容(例如,使用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()

答案 1 :(得分:5)

我会做'take'和'skip'命令并保持简单:

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

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

使用Linq