【问题标题】:c# looping through datatable, changing datac# 循环遍历数据表,改变数据
【发布时间】:2011-05-05 17:31:27
【问题描述】:

我需要遍历我的数据表的一列并对它进行一些字符串操作。谁能给我一个示例,说明我将如何遍历表并更新一些数据?

【问题讨论】:

    标签: c# .net data-binding datatable


    【解决方案1】:
    foreach (DataRow row in MyDataTable.Rows)
    {
     row["columnNameHere" Or index] = value;
    }
    

    【讨论】:

      【解决方案2】:
      foreach (DataRow row in myDataTable.Rows)
      {
          //do what you need to calculate myNewValue here
          row["myColumn"] = myNewValue;
      }
      

      已更新以添加 .Rows。

      【讨论】:

        【解决方案3】:

        如果你想改变一个指定的列,你可以使用上面的代码,但是如果你想改变数据表中每个单元格的内容,那么我们需要创建另一个数据表并使用“导入行”将其绑定如下",如果我们不创建另一个表,它会抛出一个异常,说“Collection was Modified”。

        考虑下面的代码。

            //New Datatable created which will have updated cells
                    DataTable dtUpdated=new DataTable();
                    //This gives similar schema to the new datatable
                    dtUpdated = dtReports.Clone();
                        foreach (DataRow row in dtReports.Rows)
                        {
                            for (int i = 0; i < dtReports.Columns.Count; i++)
                            {
                                string oldVal = row[i].ToString();
                                string newVal = "{"+oldVal;
                                row[i] = newVal;
                            }
                            dtUpdated.ImportRow(row); 
                        }
        

        这将有所有以括号({)开头的单元格

        【讨论】:

          【解决方案4】:

          除了使用 for 循环外,同样的事情。这真的是一个偏好问题。试试下面的代码..

          for (int i = 0; i <= myDataTable.Rows.Count - 1; i++){
                              myDataTable.Rows[i]["ColumnName" Or IndexNumber] = value;
          }
          

          【讨论】:

          • 那行得通,但我无法想象你为什么要使用它;这只是很多额外的代码。
          猜你喜欢
          • 2012-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多