如何快速从DataTable中删除DataRow

时间:2017-07-07 01:41:42

标签: c# datarow

我在列方向上在DataTable中输入数据。

for(int i=0 ; i<mTable.Count ; i++){
  Table.Columns.Add(i);
  foreach(DataRow row in Table.Rows){
    if(result == 1)
      row[i] = result;
    else
      row[i] = null;
  }
}

从这里开始,如果列的所有数据都为空,我想删除行。

例如,

  

1 2 3 4 5

     

6 7 8 9 10

     

11 12 13 14 15

     

16 17 18 19 20

11,12,13,14,15为null,我想删除Table.Rows [2]。

所以,我使用下一个方式。

for(int i = Table.Rows.Count-1;i >= 0;i--)
{
                for (int j = 0; j < mTable.Count; j++)
                {
                    if (Table.Rows[i][j] != null)
                        break;
                    if(j == mTable.Count-1)
                        Table.Rows.Remove(Table.Rows[i]);
                }
}

但是,如果有大量数据,它会大大减慢。

还有另一种快速方式吗?

2 个答案:

答案 0 :(得分:0)

你的算法可能是最快的方法。但是,通过一些改进,你可以获得更好的性能

            int numberOfCols = Table.Columns.Count;
            for (int i = Table.Rows.Count - 1; i >= 0; i--)
            {
                Boolean delete = true;
                for (int j = 0; j < numberOfCols; j++)
                {
                    if (Table.Rows[i][j] != null)
                    {
                        delete = false;
                        break;
                    }
                }
                if (delete)
                {
                    Table.Rows.Remove(Table.Rows[i]);
                }
            }

答案 1 :(得分:0)

您可以从表中选择非空行,而不是删除行。

nonEmpty

{{1}}将不是所有非空行的数据表;