c# - 如何转换十进制?将 LINQ 与存储过程结合使用时转换为十进制

标签 c# sql-server linq stored-procedures

public static decimal getall(ref decimal? number)
{
    var sigma = from p in db.getDPMO1(ref number)
                select p.Sigma;
    return sigma; // I am getting Cannot Convert decimal? to decimal
}

这是我的存储过程,它采用十进制参数

ALTER PROCEDURE getDPMO1
    (@number Decimal OUTPUT)
AS
    SELECT
        MIN(Sigma_Value) AS Sigma 
    FROM
        Sigma_Table 
    WHERE
        Defect_Rate < @number

    RETURN

最佳答案

可能没有满足您的条件的行Defect_Rate < @number因此结果将是 null ,不是0

您可以将sql更改为COALESCE(MIN(Sigma_Value), 0)ISNULL(MIN(Sigma_Value), 0)如果你需要一个可靠的数字。另请注意,存储过程的返回类型应定义为 NOT NULL .

或者,您可以更改代码以期望出现空值。也就是说,将返回类型更改为 decimal?而不是decimal .

关于c# - 如何转换十进制?将 LINQ 与存储过程结合使用时转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855139/

相关文章:

c# - Unity3d:仅将幅度钳制到 x 轴

sql-server - 如何将 SQL Server 的结果 - "New Data Comparison"导出到 Excel 文件?

c# - 在 C# 中执行包含 GO 语句的 SQL 批处理

c# - 从 Linq-to-Entities 中选择 Linq-to-XML?

c# - 如何在 C# 中为 LambdaExpression 组合 MemberExpression 实例?

c# - 如何使用WMI获取USB设备的盘符

c# - 确定 ForEachAsync 并行度的因素

c# - 将报表数据导出到 Excel

sql-server - 在 ubuntu 中安装 ms-sql 时发生包冲突。包裹破损

C# WPF Linq Join 4 个表和具有不同参数的Where