使用C#指定的强制转换无效错误

moe*_*moe 3 c# asp.net sql-server-2008

我试图将一个select语句结果存储在C#变量中,但是收到此错误

"指定演员表无效"

当我运行它.我不知道如何解决它,请帮忙

SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);

        SqlCommand cmd1 = new SqlCommand("select cast(round(sum(CAST(AvgNumbers AS numeric(12,2))),2) as decimal(12,2)) AS [Average Days] from MainTable ", con1);

        cmd1.Connection = con1;
        con1.Open();
        Int32 result = (Int32)cmd1.ExecuteScalar();
        con1.Close();
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 5

cmd1.ExecuteScalar()没有返回一个盒装整数.将它分配给一个对象并在调试器中查看它以查看它到底是什么.

我猜它会返回一个Decimal或一个double,你需要这样做:

Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

要么:

Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

[编辑回复下面提交的问题]

要保持小数值,只需执行以下操作:

Decimal result = (Decimal) cmd1.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

如果需要,可以将小数转换为double:

double result = (double)(Decimal) cmd1.ExectuteScalar();
Run Code Online (Sandbox Code Playgroud)