查找并替换/更新DataTable中所选列的所有行中的特定条目

时间:2014-02-12 14:56:06

标签: c# .net linq replace datatable

在DataTable中,我试图找到特定的字符串条目以替换它们或更新它们。

但是,它必须仅针对特定列(数据类型为字符串)。

我需要的是使用它们的名称或标题选择所有这些列,然后查找并替换/更新这些列中具有特定条件的所有字符串。

E.g。使用名称选择列(名称位于List<string>string[]),然后在字符串的开头搜索包含%的每个字符串,并将其替换为{{1 }}

使用SQL的类似尝试是@

我试图在单个select col,replace(col,'%','@') from dtTable where col like '@%'查询中执行此操作,但到目前为止没有成功。任何LINQ的例子都会有很大的帮助。

1 个答案:

答案 0 :(得分:1)

LINQ应仅用于查询集合而不是修改它们。使用简单的循环和强类型的DataRow.Field + DataRow.SetField并支持nullables:

List<string> colsToUpdate = new List<string> { "Column1", "Column2", "..." };
foreach (DataRow row in table.Rows)
{
    foreach (String colName in colsToUpdate)
    {
        string oldValue = row.Field<string>(colName);
        if(oldValue.StartsWith("%"))
            row.SetField(colName, "@" + oldValue.Substring(1));
    }
}