【问题标题】:Selecting second set of 20 row from DataTable从 DataTable 中选择第二组 20 行
【发布时间】:2013-01-20 23:26:32
【问题描述】:

我有一个数据表,我从 SQL 表中填充以下示例列

  • 身份证
  • 类型
  • 价值

我正在使用特定类型的行填充 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")

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

【问题讨论】:

    标签: c# select datatable


    【解决方案1】:

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

    【讨论】:

    • 我完全同意。我讨厌在记忆中做这件事的想法。之后我可以更改它,只是我希望它现在可以正常工作。我会试一试。阅读它,我看不出有什么问题。谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

    • 我正在使用 System.Linq。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2011-03-17
    • 1970-01-01
    • 2010-12-21
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多