gpt4 book ai didi

asp.net - 从DataTable中删除空行的方法?

转载 作者:行者123 更新时间:2023-12-02 17:46:31 24 4
gpt4 key购买 nike

我通过 Excel 电子表格进行了解析,并将整个结果作为数据表返回。但是,这个 Excel 电子表格有几个空行,我想从生成的数据表中删除它们。特别是,每个空行都以一个空单元格开头。所以,我知道如果第一个索引处的单元格的值为空,则整行都是空的。请注意,我不能简单地修改 Excel 电子表格,因为我必须准确处理客户发送给我的内容。基于此信息,我假设我可以执行以下功能来删除空行:

' DataTable dt has already been populated with the data

For Each row As DataRow In dt.Rows
If dt.Rows.Item(0).ToString = "" Then
dt.Rows.Remove(row)
ElseIf dt.Rows.Item(0) Is Nothing Then
dt.Rows.Remove(row)
End If
Next

但是,在制定此解决方案后,我遇到了以下错误:

Collection was modified; enumeration operation might not execute.

我现在意识到我无法在访问集合时更改它。我该如何解决这个问题?我想知道是否应该创建一个新的数据表,其中的行不为空。这是最好的方法还是有更好的选择?

编辑:我也尝试过向后遍历行:

For i = dt.Rows.Count() - 1 To 0
If dt.Rows.Item(i).Item(0).ToString = "" Then
dt.Rows.RemoveAt(i)
End If
Next

最佳答案

在使用 For Each 枚举集合时,您无法修改集合,而是一个简单的 For循环将工作。您需要向后循环以避免跳过删除行后的行。

您还以错误的方式进行了测试;如果Item(0)返回 Nothing , 然后 Item(0).ToString会抛出 NullReferenceException .

我假设 dt.Rows.Item(0)是一个打字错误,应该阅读 row.Item(0)相反。

For i As Integer = dt.Rows.Count - 1 To 0 Step -1
Dim row As DataRow = dt.Rows(i)
If row.Item(0) Is Nothing Then
dt.Rows.Remove(row)
ElseIf row.Item(0).ToString = "" Then
dt.Rows.Remove(row)
End If
Next

关于asp.net - 从DataTable中删除空行的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com