C# 将数据表字段从字符串转换为双精度
我试图将数据从SQL库检索到C# 将数据表字段从字符串转换为双精度,c#,datatable,C#,Datatable,我试图将数据从SQL库检索到数据表,并对某些字段进行一些十进制操作 由于我可以获得strings,ints和doubles,因此我的DataTable中的s是这样初始化的newdatatable()。因此,默认类型设置为string更新:这是错误的,它是decimal。所以不需要转换 假设我想从我的DataTable myRow = 2; double sum = 0; foreach (DataRow row in data.Rows) { if (row.Field<Strin
数据表
,并对某些字段进行一些十进制操作
由于我可以获得string
s,int
s和double
s,因此我的DataTable
中的s是这样初始化的newdatatable()代码>。因此,默认类型设置为string
更新:这是错误的,它是decimal
。所以不需要转换
假设我想从我的DataTable
myRow = 2;
double sum = 0;
foreach (DataRow row in data.Rows)
{
if (row.Field<String>(myRow) != "")
sum = sum + double.Parse(row.Field<String>(myRow), CultureInfo.InvariantCulture.NumberFormat);
}
一个解决办法是让我的数据库进行求和。if(row.Field(myRow)!=“”){
if(row.Field<String>(myRow) != ""){
var stringToDouble = Convert.ToDouble(row.Field<String>(myRow));
//Or you can do Convert.ToDecimal(row.Field<String>(myRow));
}
var stringToDouble=Convert.ToDouble(row.Field(myRow));
//或者您可以执行Convert.ToDecimal(row.Field(myRow));
}
在datatable中,字段是“System.Decimal”
,您试图将其强制转换为stringQuestion。这表示它存储为字符串:row.Field
。但错误表明它存储为十进制。如果字符串已经是十进制的,那么就不需要将其解析为十进制。“或者我可以做一个SQL请求来求和”嗯,当然你可以这样做。但您现在的问题是什么?默认类型是DataTable
中的Decimal
?我以为是String
修复了数据类型。我会编辑的。
if(row.Field<String>(myRow) != ""){
var stringToDouble = Convert.ToDouble(row.Field<String>(myRow));
//Or you can do Convert.ToDecimal(row.Field<String>(myRow));
}