编辑列中的所有行,data table c#

edit all rows in a column, data table c#

我有一个数据 table,其中填充了已读入的文件中的数据。然后我希望编辑特定列中的所有行。在我的例子中,将速度列除以 1.6 以从 KMH 转换为 MPH。

到目前为止,我已尝试使用以下代码,但我得到的索引超出范围

foreach (DataRow row in data_table.Rows) {
     row["Speed (KM/H)"] = speed[x]/1.6;
}

这里是用文件

填充数据table的代码
 private void display_hrm_data() {
     /* array heart_rate_table set to heart_rate
      * adds each column
      * for every piece of data in heart_rate_table add rows
      */        
     data_table.Columns.Add("Heart Rate (BPM)", typeof(string));
     data_table.Columns.Add("Speed (KM/H)", typeof(int));
     data_table.Columns.Add("Cadence (RPM)", typeof(int));
     data_table.Columns.Add("Altitude (M)", typeof(int));
     data_table.Columns.Add("Power (Watts)", typeof(int));
     data_table.Columns.Add("Time (Seconds)", typeof(int));
     for (int x = 0; x < heart_rate.Count - 1; x++) {
         time = time + 1;
         data_table.Rows.Add(heart_rate[x],speed[x],cadence[x],altitude[x],power[x], time);
     }
     dgv_data.DataSource = data_table;
}

您可以使用强类型的 FieldSetField 扩展,否则您需要手动将字段从对象转换为 int。您得到 IndexOutOfRange 异常,因为 x 似乎是无效索引。使用列名称。

例如:

DataColumn speedCol = data_table.Columns["Speed (KM/H)"];
foreach (DataRow row in data_table.Rows)
{
    int oldSpeed = row.Field<int>(speedCol);
    row.SetField(speedCol, oldSpeed / 1.6); 
}