我通过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;
}
}
}
答案 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;