我正在试图找出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...
}
这是一种在数据表末尾添加行的有效方法吗?
答案 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