Замена строки - не весь вопрос.Есть несколько важных моментов, которые игнорируются другими ответами.
- Присвоение значения элементу массива элементов не изменит значение столбца.
- Присвоение значения переменной, содержащей значение столбца, не изменит значение столбца.
- Чтобы заменить значения столбца с помощью
ItemArray
, необходимо назначить новому массиву свойство ItemArray
. - При попытке заменить свойство
ItemArray
, если существует столбец только для чтения,тогда настройка элемента массива вызовет исключение. - И точка, уже упомянутая другими ответами,
Replace
метод строки вернет замененную строку результата, она не изменит исходную строку.
Просто для вашей информации, чтобы лучше понять свойство ItemArray
, так работает свойство (вкратце):
Public object[] ItemArray {
get {
var values = new object[Columns.Count];
for (int i = 0; i < values.Length; i++) {
values[i] = Columns[i];
}
return values;
}
set {
for (int i = 0; i < values.Length; i++) {
//Checks if the column is writable and value is valid
Columns[i] = value[i];
}
}
}
Вы можете прочитать все исходный код .
Итак, следующие фрагменты кода неверны и ничего не сделают для вас:
- Неправильно:
row.ItemArray[i] = "something";
→ Не изменит столбец [i] - Неправильно:
var item = row[i]; item = "something";
→ Не изменит столбец [i] - Неправильно
var s = "something"; s.Replace("s", "x");
→ Не изменится s
.
Пример - использование ItemArray
Обратите внимание: если в таблице данных есть столбец только для чтения, следующий код вызовет исключение:
foreach (DataRow r in dt.Rows)
{
var a = r.ItemArray;
for (int i = 0; i < dt.Columns.Count; i++)
{
if ($"{a[i]}" == "A") // if($"{a[i]}".Contains("A"))
a[i] = "150"; // a[i] = $"{a[i]}".Replace("A", "150");
if ($"{a[i]}" == "D")
a[i] = "250";
}
r.ItemArray = a;
};
Пример - использование индексатора столбцов
foreach (DataRow r in dt.Rows)
{
foreach (DataColumn c in dt.Columns)
{
if (c.ReadOnly)
continue;
if ($"{r[c]}" == "A") // if($"{r[c]}".Contains("A"))
r[c] = "150"; // r[c] = $"{r[c]}".Replace("A", "150");
else if ($"{r[c]}" == "D")
r[c] = "250";
}
}