C# SqlParameter 数组如何使用三元运算符

时间:2021-08-01 20:12:26

标签: c# enums

我有以下一段代码,如果我的对象值之一为 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 或更高版本的语言

1 个答案:

答案 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