C# C无法从SQL Server SELECT强制转换计算列
我似乎想不出从SQLServer2012 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列
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啊,你说得对。我被亲戚打败了。真是荣幸。