【发布时间】:2019-05-16 21:48:26
【问题描述】:
我有一个有 10 列的 datatable。我必须检查每列中的单元格值是否包含值 A 或 D,如果是,我必须分别将“A”替换为“150”,将“D”替换为“250”。
我正在尝试这个 ::
foreach (DataRow dr in dt.Rows)
{
foreach(var item in dr.ItemArray)
{
if( item.ToString()=="A")
{
item.ToString().Replace("A", "150");
}
if (item.ToString() == "D")
{
item.ToString().Replace("A", "250");
}
}
}
但值不会被替换。为什么会这样?这段代码有什么错误?
【问题讨论】:
-
这不仅仅是替换字符串。这个问题还有一个重要的点,回答者忽略了这一点。为 item 数组的元素赋值或为指向列值的变量赋值是没有用的 →
var item = row.Columns[i]; item = "something";是错误)。他们应该像这样替换整个项目数组row.ItemArray = anotherArray;或直接为列值分配一些东西:row.Columns[i] = "something"; -
尝试替换整个
ItemArray属性时的另一个重要点→如果存在只读列,则设置项目数组将引发异常。 -
@RezaAghaei 感谢您强调这些要点。它很有帮助。