Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据表字段从字符串转换为双精度_C#_Datatable - Fatal编程技术网

C# 将数据表字段从字符串转换为双精度

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

我试图将数据从SQL库检索到
数据表
,并对某些字段进行一些十进制操作

由于我可以获得
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));
}