最简单的方法一次检查DBNull和null

时间:2014-10-22 18:54:24

标签: c# asp.net sql-server null dbnull

我通过C#查询SQL Server数据库,以从表的特定行返回一个数字。

函数应该返回数字,否则返回0.问题是有时DB值为null,有时它根本不返回任何内容。我正在寻找最简洁的方法来同时检查这两个选项。

我得到的最简单的是:

return (value != DBNull.Value && value != null) ? (int)value : 0;

这是我所得到的简短,但是有一个命令可以检查这两个吗?

编辑:

为了便于分析,这里是我的整个代码块(包含所选答案的代码):

protected int getProfile(string user_id)
{
    using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MySqlConnection"].ConnectionString))
    {
        using (SqlCommand command = new SqlCommand("SELECT type FROM tbl_consultant WHERE fk_user_id = @user_id"))
        {
            command.Parameters.AddWithValue("@user_id", user_id);
            command.Connection = conn;

            conn.Open();
            var value = command.ExecuteScalar();

            return value as int? ?? 0;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您可以将??运算符与nullables一起使用。

return (value as int?) ?? 0;

如果你感觉大胆,你甚至可以把它们拿走。

答案 1 :(得分:2)

您可以将其作为扩展方法

public static bool IsNotNull(this object value)
{
    return value != DBNull.Value && value != null;
}

return value.IsNotNull() ? (int)value : 0;