从数据表中删除空白单元格

时间:2013-08-17 13:43:19

标签: c# .net vb.net winforms visual-studio-2008

我有以下数据表:

enter image description here

如图所示,此数据表中有一些空白单元格。

我想删除它们并只显示带有值的单元格。

我尝试了以下代码,但它没有用:

For i=0 to dt.Rows.count-1

For j=0 to dt.Column.count-1


if dt.rows(i).tostring()="" then

dt.rows.remove(i)

end if

next

Next

此代码不起作用。请帮帮我。

c#中的答案也可以帮助我。

2 个答案:

答案 0 :(得分:2)

理想情况下,您只想在其所有单元格都为空时删除一行。您显示的算法将删除该行,即使其中的单个单元格为空。您应该像这样更改代码:

首先删除空行:

For i = 0 To dt.Rows.Count - 1
    flag = True

    For j = 0 To dt.Columns.Count - 1
        If Not(dt.Rows(i).IsNull(j)) AndAlso dt.Rows(i)(j).ToString() <> "" Then
            flag = False
            Exit For
        End If
    Next

    If flag Then dt.Rows(i).Delete()
Next

dt.AcceptChanges()

现在删除空列:

For i = 0 To dt.Columns.Count - 1
    flag = True

    For j = 0 To dt.Rows.Count - 1
        If Not(dt.Rows(j).IsNull(i)) AndAlso dt.Rows(j)(i).ToString() <> "" Then
            flag = False
            Exit For
        End If
    Next

    If flag Then dt.Columns.RemoveAt(i)
Next

dt.AcceptChanges()

答案 1 :(得分:1)

您最好先删除列:

dt.Columns.OfType<DataColumn>()
          .Where(c=>!dt.Rows.OfType<DataRow>()
                            .Any(r=>r.Field<string>(c.ColumnName) != ""))
          .ToList()
          .ForEach(c=>dt.Columns.Remove(c));

//Remove rows
dt.Rows.OfType<DataRow>()
       .Where(r=>!dt.Columns.OfType<DataColumn>()
                            .Any(c=>r.Field<string>(c.ColumnName) != ""))
       .ToList()
       .ForEach(r=>dt.Rows.Remove(r));