首页 > 解决方案 > 在 foreach C# 期间更新数据表中的一行

问题描述

我正在寻找在您遍历所述数据表时修改数据表的最佳实践。

我正在获取数据表序列行号列中的最大值。在这个例子中它是 25。我在这个数据表中有很多零,我将一个一个地找到它们并将它们更改为 25+1,26+1,27+1 等等。我想知道会怎样在我编辑行的值时,不必创建另一个表并构建一个新表,这是最好的做法。

int maxSequenceNumber = Convert.ToInt32(dtNewOrderGuide.Compute("max([seqlinnum])", string.Empty));

foreach(DataRow row in dtNewOrderGuide.Rows)
{
    if (row["seqlinnum"].ToString() == "0")
    {
    }
}

我的表示例

RowNumber   | seqlinnum
1           |     1
2           |     10
3           |     15
4           |     25
5           |     0
6           |     0
7           |     0
8           |     0
9           |     0
10          |     0

标签: c#datatable

解决方案


作为替代方案,在 foreach 上使用传统的 for 循环意味着不进行任何数据复制或任何操作,并且可能会更快地通过数据表运行

for(int i=0;i<table.Rows.Count;i++)
{ 
   if (table.Rows[i]["seqlinnum"].ToString() == "0")
   {
     table.Rows[i]["seqlinnum"]=maxSequenceNumber; maxSequenceNumber++;
   }
}

推荐阅读