Где метод DataRowCollection.Add вставляет новую строку? - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь выяснить, где DataRowCollection.Add (строка DataRow) вставляет новую строку в таблицу данных.Это в конце таблицы, как приложение?Это случайно?

Кроме того, я хочу использовать это, пока я перебираю данные.Если существует какое-либо условие, добавьте новую строку, содержащую другие данные, чтобы выполнить цикл For, до конца таблицы данных.Есть ли какие-то конкретные проблемы с этим подходом?Как еще я мог бы справиться с этим?

РЕДАКТИРОВАТЬ: Я для циклического перемещения по .Net DataTABLE хранится в памяти.Я не касаюсь базы данных, где хранятся исходные данные во время этой операции зацикливания.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 ]

2 голосов
/ 09 февраля 2011

Насколько я знаю, он всегда добавляется в конец коллекции.

Если вы for перебираете базу данных, проблем быть не должно, если вы начинаете с началатаблицы данных и заканчивайте в конце этого или чего-то подобного.Тем не менее, вы также будете циклически перебирать вновь созданные строки данных, и я не знаю, хотите ли вы этого добиться.Проблемы могут возникнуть только в том случае, если вместо этого вы используете цикл foreach, поскольку он не может обрабатывать изменения базовой коллекции.

1 голос
/ 09 февраля 2011

Если вы хотите узнать, является ли строка новой или нет, вы можете проверить свойство 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();
0 голосов
/ 09 февраля 2011

Метод Add вставит DataRow только в объект DataRowCollection.Чтобы фактически добавить DataRow в таблицу данных, вам нужно вызвать метод NewRow, который добавляется к DataTable и, таким образом, добавляет строку в таблицу в этой базе данных.Для справки, проверьте http://msdn.microsoft.com/en-us/library/9yfsd47w.aspx

0 голосов
/ 09 февраля 2011

Это всегда в конце таблицы, насколько я знаю большинство коннекторов базы данных, когда вы используете их строку добавления, она всегда в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...