C # циклический просмотр данных, изменение данных - PullRequest
5 голосов
/ 05 ноября 2010

Мне нужно перебрать один из столбцов моей таблицы данных и выполнить с ней некоторые манипуляции со строками.Может ли кто-нибудь дать мне пример того, как я бы перебрал таблицу и обновил некоторые данные?

Ответы [ 4 ]

22 голосов
/ 05 ноября 2010
foreach (DataRow row in MyDataTable.Rows)
{
 row["columnNameHere" Or index] = value;
}
10 голосов
/ 05 ноября 2010
foreach (DataRow row in myDataTable.Rows)
{
    //do what you need to calculate myNewValue here
    row["myColumn"] = myNewValue;
}

ОБНОВЛЕНО для добавления. Строки.

1 голос
/ 16 января 2014

Если вы хотите изменить указанный столбец, вы можете использовать приведенный выше код, но если вы хотите изменить содержимое каждой ячейки в таблице данных, то нам нужно создать другую таблицу данных и связать ее следующим образом, используя «Импорт строки ", Если мы не создадим другую таблицу, она выдаст исключение, говорящее" Коллекция была изменена ".

Рассмотрим следующий код.

    //New Datatable created which will have updated cells
            DataTable dtUpdated=new DataTable();
            //This gives similar schema to the new datatable
            dtUpdated = dtReports.Clone();
                foreach (DataRow row in dtReports.Rows)
                {
                    for (int i = 0; i < dtReports.Columns.Count; i++)
                    {
                        string oldVal = row[i].ToString();
                        string newVal = "{"+oldVal;
                        row[i] = newVal;
                    }
                    dtUpdated.ImportRow(row); 
                }

Это будет иметь все клетки, предшествующие Paranthesis ({)

1 голос
/ 05 ноября 2010

То же самое, за исключением использования цикла for. Это действительно вопрос предпочтений. Попробуйте следующий код ..

for (int i = 0; i <= myDataTable.Rows.Count - 1; i++){
                    myDataTable.Rows[i]["ColumnName" Or IndexNumber] = value;
}
...