我在列方向上在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]);
}
}
但是,如果有大量数据,它会大大减慢。
还有另一种快速方式吗?
答案 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}}将不是所有非空行的数据表;