C# SqlParameter 数组如何使用三元运算符有条件地将值设置为空
C# SqlParameter array how to conditionally set value to null using ternary operator
我有以下代码,如果我的对象值之一为 null 并且如果不将其设置为不同的变量值,我试图将 sql 参数设置为 null。
理想情况下,我只是让 enumvalue
为 null,但由于这是 EnumListValues
的枚举转换,null 似乎默认为 0。所以我想出的三元解决方案是解决这个问题。如果 object1
不存在,我不希望我的 enumvalue
变量为 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
但是我收到错误:
Error CS8370
Feature 'target-typed conditional expression' is not available in C# 7.3. Please use language version 9.0 or greater
最简单的答案是使用 TryParse 中的 return 的三元来获得你想要的。这会将 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
我有以下代码,如果我的对象值之一为 null 并且如果不将其设置为不同的变量值,我试图将 sql 参数设置为 null。
理想情况下,我只是让 enumvalue
为 null,但由于这是 EnumListValues
的枚举转换,null 似乎默认为 0。所以我想出的三元解决方案是解决这个问题。如果 object1
不存在,我不希望我的 enumvalue
变量为 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
但是我收到错误:
Error CS8370
Feature 'target-typed conditional expression' is not available in C# 7.3. Please use language version 9.0 or greater
最简单的答案是使用 TryParse 中的 return 的三元来获得你想要的。这会将 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