如何在C#中使用Linq替换DataTable所有行的双引号?

如何在C#中使用Linq替换DataTable所有行的双引号?,c#,.net,C#,.net,如何在C#中使用Linq替换DataTable所有行的双引号 我在下面尝试过,但我需要更多的优化代码来达到同样的目的 int columnIndex = 0; dtExcelData.Rows.RemoveAt(0); foreach (DataColumn excelSheetColumns in dtExcelData.Columns) { int rowIndex = 0; foreach (DataRow row in dtExcelData.Rows) {

如何在C#中使用Linq替换DataTable所有行的双引号

我在下面尝试过,但我需要更多的优化代码来达到同样的目的

int columnIndex = 0;
dtExcelData.Rows.RemoveAt(0);
foreach (DataColumn excelSheetColumns in dtExcelData.Columns)
{
    int rowIndex = 0;
    foreach (DataRow row in dtExcelData.Rows)
    {
        dtExcelData.Rows[rowIndex][columnIndex] = dtExcelData.Rows[rowIndex][columnIndex].ToString().Replace("\"", "");
        rowIndex++;
    }
    columnIndex++;
}
请建议您

  • 请注意删除第一行,如果将结果写回数据存储,则会丢失这一行
  • 问问自己,如果从不使用这些对象,为什么要忽略列和行。为什么不在rowIndex和columnIndex上使用for循环呢
  • 考虑只处理真正是字符串的数据字段。ToString()将所有内容都转换为字符串,然后用字符串覆盖任何类型的数据字段。更好地测试“is String”,然后将字段强制转换为(String)
  • 考虑获取每一行,然后处理此行中的每一列。这可以更快地执行,但即使不是这样,也更容易理解(至少对我来说)

我在这里添加了代码,因为代码比URL更好,您可以尝试以下代码:

这已经在下面的URL中提到了


您可以使用DataRow.ItemArray。比如说

foreach(var row in dtExcelData.Rows.Cast<DataRow>())
{
    row.ItemArray = row.ItemArray.Select(x=>x.ToString().Replace("\"","")).ToArray();
}
foreach(dtExcelData.Rows.Cast()中的变量行)
{
row.ItemArray=row.ItemArray.Select(x=>x.ToString().Replace(“\”,”).ToArray();
}

出于同样的目的,我需要更多优化的代码
您想要优化性能还是清洁代码(较短的conde)?我需要用很少的代码来实现结果。这是否回答了您的问题?我想要将数据写回dtExcelData对象本身,而不是使用clone创建新的DataTable对象。
foreach(var row in dtExcelData.Rows.Cast<DataRow>())
{
    row.ItemArray = row.ItemArray.Select(x=>x.ToString().Replace("\"","")).ToArray();
}