DataRowCollection.Add方法在哪里插入新行?

时间:2011-02-09 16:32:15

标签: c# .net datatable for-loop

我正在试图找出DataRowCollection.Add(DataRow行)将新行插入其数据表的位置。它是在表的末尾,就像追加一样吗?是随机的吗?

另外,我想在循环数据表时使用它。如果存在某些条件,请添加包含不同数据的新行,以通过For循环运行到数据表的末尾。这种方法有什么具体问题吗?我怎么办呢?

编辑:我通过存储在内存中的.Net DataTABLE进行循环。我没有触及在此循环操作期间存储原始数据的dataBASE。在循环之前填充DataTABLE并且不是问题。

这是相关代码:

 DataTable machineANDlastDate = new DataTable();
//Populate machineANDlastDate  

for (int i = 0; i < machineANDlastDate.Rows.Count; i++)
{
   lastFutureDate = DateTime.Parse(machineANDlastDate.Rows[i]["MaxDueDate"].ToString());
   newDateTime = lastFutureDate.AddDays(frequency);    //This is where the new date is created.
   machineSerial = machineANDlastDate.Rows[i]["machineSerial"].ToString();

   if (newDateTime < DateTime.Now)
   {
          machineANDlastDate.Rows.Add(new String[] { machineSerial,         newDateTime.AddDays(frequency).ToString() });

          continue;
   } 
  ...Removed for irrelevancy...
}

这是一种在数据表末尾添加行的有效方法吗?

4 个答案:

答案 0 :(得分:2)

据我所知,它总是被添加到集合的末尾。

如果你for遍历数据库,那么如果你从数据表的开头开始并在结束时结束或者类似的话,那就不会有问题。但是,您还将遍历新创建的数据行,我不知道您是否想要实现此目的。如果您采用foreach循环,则只会遇到问题,因为它无法处理基础集合的修改。

答案 1 :(得分:1)

如果您想知道某行是否是新行,可以查看DataRow.RowState属性。

// your code to add rows
...

// process added rows
foreach (DataRow row in machineANDlastDate.Rows)
{
    if (row.RowState == DataRowState.Added)
    {
        // do stuff
    }
}

// now confirm new rows (they won't have a RowState of Added after this)
machineANDlastDate.AcceptChanges();

答案 2 :(得分:0)

它总是在表的末尾,据我所知,大多数DataBase控制器,当你使用它们的添加行时,它总是在最后。

答案 3 :(得分:-3)

Add方法只会将DataRow插入DataRowCollection对象。要将DataRow实际添加到数据表,您需要调用NewRow方法将其自身附加到DataTable,然后将该行附加到该数据库中的表。如需参考,请查看http://msdn.microsoft.com/en-us/library/9yfsd47w.aspx