我有以下一段代码,如果我的对象值之一为 null 并且未将其设置为不同的变量值,我将尝试将 sql 参数设置为 null。
理想情况下,我只会让 enumvalue
为 null,但由于这是 EnumListValues
的枚举转换,因此 null 似乎默认为 0。所以我想出的三元解决方案是有效的围绕这个。如果 enumvalue
不存在,我不希望我的 object1
变量为 0。
public enum EnumListValues
{
Disabled = 0,
Enabled = 1
}
Enum.TryParse(object1?.Value, out EnumListValues.LightStatus enumvalue);
new SqlParameter("object1param", SqlDbType.Bit) {Value = object1 != null ? enumvalue : DBNull.Value } //enumvalue is 0 or 1
但是我得到了错误:
<块引用>错误 CS8370
功能“目标类型条件表达式”在 C# 7.3 中不可用。请使用 9.0 或更高版本的语言
答案 0 :(得分:1)
最简单的答案是使用带有 TryParse 返回值的三元组来获得您想要的结果。这会将 enumvalue 变成 LightStatus 吗?然后您可以将其输入到您的 SqlParameter 中。
var enumvalue = Enum.TryParse(object1?.Value, out EnumListValues.LightStatus tmp)
? (object)tmp
: DBNull.Value;
new SqlParameter("object1param", SqlDbType.Bit).Value = enumvalue;
//enumvalue is a boxed 0, 1 or DBNull.Value