Обновление строки в datatable во время foreach C # - PullRequest
0 голосов
/ 01 ноября 2018

Я ищу рекомендации по изменению данных, пока вы просматриваете эти данные.

Я получаю максимальное значение в столбце номера строки последовательности данных. В этом примере это 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

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

в качестве альтернативы, использование традиционного цикла for поверх foreach означало бы, что копирование данных или что-то еще не выполнялось, и, вероятно, работало бы быстрее, чем данные,

for(int i=0;i<table.Rows.Count;i++)
{ 
   if (table.Rows[i]["seqlinnum"].ToString() == "0")
   {
     table.Rows[i]["seqlinnum"]=maxSequenceNumber; maxSequenceNumber++;
   }
}
0 голосов
/ 01 ноября 2018

Вы можете сделать это с Linq ... возможно, вы захотите использовать порядок, почему перед выбором, если вы не хотите рисковать перезаписью последовательности.

var query = td.Rows.Cast<DataRow>().Select((r,i)=>new {r,i});
foreach (var row in query)
{
    row.r[“seqlinnum”]=row.i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...