繁体   English   中英

如何使用 IEnumerable 处理空返回数据中的异常<decimal> C#

[英]How to handle exception in empty return data with IEnumerable<decimal> C#

我正在使用 Dapper 并想使用存储过程返回今天的销售额,但如果今天没有销售,它会返回空值,从而引发异常“'对象引用未设置为对象的实例。” 在与Query的行。

如何处理那个异常?

使用的代码

public decimal GetAllSaleTotal(string connectionStringName = "POS")
{
    string connectionString = GetConnectionString(connectionStringName);
    using (IDbConnection connection = new SqlConnection(connectionString))
    {
        var result = connection.Query<decimal>("dbo.GetTotalSales", commandType: 
                    CommandType.StoredProcedure).First();
        return result;
    }
}

为什么不使用 try..catch 语句处理异常。

此外,您应该使用var result = connection.Query<decimal?>("dbo.GetTotalSales", commandType: CommandType.StoredProcedure).FirstOrDefault();

这是我可以处理的方法。 使用Take得到 0 或 1 行,然后检查长度。

public decimal GetAllSaleTotal(string connectionStringName = "POS")
{
    string connectionString = GetConnectionString(connectionStringName);
    using (IDbConnection connection = new SqlConnection(connectionString))
    {
        var result = connection.Query<decimal>
        (
            commandText: "dbo.GetTotalSales", 
            commandType: CommandType.StoredProcedure
        ).Take(1).ToList();
        return result.Count > 0 ? result[0] : 0M;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM