ternary operator
附带以下错误。
错误:无法确定条件表达式的类型,因为''和'int'之间没有隐式转换
即使我为(int)(result)
结果指定了ExecuteScalar
,为什么会出现此错误?我们如何纠正它?
CODE
public int? GetWINFromAssociateID(int associateID)
{
int? WIN =null;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string commandText = DataLayerConstants.GetWINFromAssociateIDCommand;
using (SqlCommand command = new SqlCommand(commandText, connection))
{
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@payroll_svc_assoc_id", associateID);
var result = command.ExecuteScalar();
WIN = result == DBNull.Value ? null : (int)(result);
}
}
return WIN;
}
更新的参考资料
答案 0 :(得分:3)
您应该将三元运算符中的null转换为int?:
Win=result==DBNull.Value?(int?)null:(int?)result;
答案 1 :(得分:0)
这是因为Command.ExecuteScalar
返回object
类型的实例;你可能不会返回一个整数。
您需要使用int.Parse
或更好的int.TryParse;
int.Parse(result.ToString());
OR
int temp = -1;
int.TryParse(result.ToString(), out temp);