【问题标题】:Delete first 5 rows of datatable删除数据表的前5行
【发布时间】:2016-01-08 14:52:04
【问题描述】:

是否可以删除数据表的前 5 行?

我尝试了以下,但它删除了每隔一行。

For j as interfere = 0 to lastrow step 1
   Dt.rows.remove (dt.rows (j))
Next

【问题讨论】:

  • 添加条件if j = 5 then exit for
  • 它已经停在 5 点了。它将删除第一行跳过第二行删除第三行,依此类推
  • 尝试获取“步骤 1”部分。我知道它应该可以工作,但默认情况下它会步进 1。值得一试。
  • 你可以调用dt.Rows.RemoveAt(0) 5次,但你应该检查是否有任何行要删除。

标签: .net vb.net datatable


【解决方案1】:

您可以使用这样的代码,删除前 5 行:

For index = 1 To 5
    If (dt.Rows.Count > 0) Then
        dt.Rows.RemoveAt(0)
    End If
Next

if 部分检查是否有要删除的行。

【讨论】:

  • 感谢相关工作,但为什么与我所拥有的不同?
  • 因为我在回答中所说的。索引正在改变,所以如果你删除索引 0,1 变为 0,你的迭代器变量增加到 2。Reza 的代码在循环的每次迭代中删除索引 0。这将保证只删除最上面的项目。
  • 不客气,您正在删除dt.rows(j)。例如,如果您将 0,1,2,3,4,... 存储在行中,当您删除 0 时,您希望删除行 (1) 即 2。
  • 谢谢,我就是这么想的,但想知道如何解释它
【解决方案2】:

倒过来试试,这样就不会影响上一行

For j as integer = 4 to 0 step -1
  Dt.rows.remove(dt.rows(j))
Next

您遇到的是在第一次迭代中,索引 0 被删除,迭代器变量变为 1

在第二次迭代中,最初位于索引 1 的内容现在是 dt 中的索引 0,因此您将删除索引 1 并保留原来的 1。

【讨论】:

  • 如果您的数据表中的行数不超过 4 行,此解决方案会出错
  • @etalon11 是的,没有检查。一旦我注意到它,我已经看到了 Reza 的答案,我认为这是一个比我更好的解决方案。
  • 你的解决方案也不错。不是从“4”开始,而是取 MIN(4, dt.Rows.Count)。那么您的解决方案会更好,因为您对 RowCount 执行的检查更少。这对 5 行无关紧要,但如果你有更多...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
相关资源
最近更新 更多