我有一个包含多个列的DataTable。我简单地需要将整个列0乘以常量值。就我而言,我正在将此专栏从Giga(10 ^ 9)转换为Kilo(10 ^ 3)。换句话说,
(我想改变一个特定列的所有行。)
我有什么:
// change the freq. unit (from Giga (10^9) to Kilo(10^3))
foreach (DataRow row in csvData.Rows)
{
row.SetField(0, 9999);
}
正如您所注意到的,在这种情况下,我很容易将索引为0的列中的所有内容设置为“9999”。如何更改以获取列的值,然后乘以10 ^ 6?
想法(不工作):
取自here:
foreach (DataRow row in csvData.Rows)
{
foreach (DataColumn column in csvData.Columns[0])
{
row.SetField(column, column * 100000);
}
}
错误:
csvData.Columns [0]) - foreach语句不能对'System.Data.DataColumn'类型的变量进行操作,因为'System.Data.DataColumn'不包含'GetEnumerator
的公共定义和
栏* 100000); - Operator *不能应用于'DataColumn'和'int'
类型的操作数答案 0 :(得分:1)
在问题的评论中使用@ChetanRanpariya提供的想法,我能够像这样解决我的问题:
foreach (DataRow row in csvData.Rows)
{
row.SetField(0, Convert.ToDouble(row[0]) * 100000);
}
旁注:我从“Convert.ToInt32”更改为“Conver.ToDouble”,因为我的列包含带点的数字。
答案 1 :(得分:0)
由于您只更改了一列的值,因此只需要一个foreach
循环(循环遍历行)。
您所要做的就是遍历行,读取列的值,然后重写。
foreach (DataRow row in csvdata.Rows) {
row.SetField(0, row.Field(0) * 1000000);
}