同时检查DBNull和null的最简单方法

本文关键字:最简单 方法 null 检查 DBNull | 更新日期: 2023-09-27 18:27:25

我正在通过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;
        }
    }
}

同时检查DBNull和null的最简单方法

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

return (value as int?) ?? 0;

如果你觉得大胆,你甚至可以去掉parens。

您可以将其作为的扩展方法

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