在 DataTable 的 DataColumn 中用另一个字符串替换字符串

4

我有一个DataTable,它检索多个列和行。其中一列("Comments")包含数据*。我想用\n替换该字符。

dtOutput = Generix.getTickets(DateTime.Parse("1-1-1900"), DateTime.Now,"",iTicket, "", "", "", "","",iDispatched,uCode);
string sOutput = "";
foreach (DataRow drOutput in dtOutput.Rows)
{
   sOutput += ((sOutput == "") ? "" : "~");
   foreach (DataColumn dcOutput in dtOutput.Columns)
   {                                    
      sOutput += ((sOutput == "") ? "" : "|") + Convert.ToString(drOutput[dcOutput]);
   }
}

我可以将所有列合并为一个字符串。 但是如何将字符替换为另一个字符并将其存储在与"sOutput"相同的字符串中。

看起来你在这里尝试将一行中的所有值连接起来,并将结果值显示在相应行的“Comments”列中? - Mr_Green
3个回答

5
在foreach循环中,您可以通过访问列索引("Comments")来修改行,并使用string.Replace将"*"替换为"\n"
foreach (DataRow drOutput in dtOutput.Rows)
{
     drOutput["Comments"] = drOutPut["Comments"].ToString().Replace('*','\n');
     //your remaining code
}

1
我认为你需要转义 "\\n" !! - V4Vendetta
@V4Vendetta,谢谢您指出了这一点,我不确定它,所以我用 string.Replace(char, char) 替换了它。 - Habib

3
foreach (DataRow row in dt.Rows)
    row.SetField<string>("Comment", 
       row.Field<string>("Comment").Replace("*", @"\n"));

1
foreach (DataColumn dcOutput in dtOutput.Columns)
{                    
    sOutput += ((sOutput == "") ? "" : "|") + Convert.ToString((dcOutput.ColumnName=="Comments") ? drOutput[dcOutput].ToString().Replace("*","\n") : drOutput[dcOutput]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接