C# C无法从SQL Server SELECT强制转换计算列

C# C无法从SQL Server SELECT强制转换计算列,c#,casting,C#,Casting,我似乎想不出从SQLServer2012 SELECT语句强制转换计算列的方法。我在计算一个叫做收益率的简单值,它基本上是一个百分比 SELECT TotalUnique, TotalFail, ISNULL(((TotalUnique - NullIf(TotalFail, 0)) / CONVERT(NUMERIC(38, 2), TotalUnique) * 100), 100) AS Yield FROM Products 对于Yield列

我似乎想不出从SQLServer2012 SELECT语句强制转换计算列的方法。我在计算一个叫做收益率的简单值,它基本上是一个百分比

SELECT 
    TotalUnique, 
    TotalFail, 
    ISNULL(((TotalUnique - NullIf(TotalFail, 0)) / CONVERT(NUMERIC(38, 2), TotalUnique) * 100), 100) AS Yield 
FROM 
    Products  
对于Yield列,我如何使用阅读器检索它?我一直收到错误信息

异常详细信息:System.InvalidCastException:指定的强制转换无效

在线:

DBYield = (float)reader["Yield"]
我一整天都在寻找能给我提供线索的东西,但运气不好

int DBTotalUnique = 0;
int DBTotalFailed = 0;
float DBYield = 00.0f;

while (reader.Read())
{
     DBTotalUnique = (int)reader["TotalUnique"];
     DBTotalFailed = (int)reader["TotalFail"];
     DBYield = (float)reader["Yield"]
}
有人能给我一个提示吗?

TSQL中的数字相当于.NET中的十进制。请参阅从TSQL到.NET的数据类型映射


尝试转换为十进制。

您是否也尝试过在数据库端进行转换?返回已知类型会更好。可能是双精度的,因为数字38,2。@Amy对数字转换很好,但数字映射到小数。@LewsTherin啊,你说得对。我被亲戚打败了。真是荣幸。