是否有必要将enum
的选定值投放到int
?
MessageType
是我的数据库中int
类型的列。
.Where(x => x.MessageType == MyEnum.Sms)
此代码说明了:
'无法应用'int'类型的运算符'=='和ClassLibrary.MyEnum
如果enum
投放到int
:
.Where(x => x.MessageType == (int) MyEnum.Sms)
我的枚举:
public enum MyEnum
{
None = 0,
Sms = 1,
Email = 2
}
答案 0 :(得分:0)
Enum的底层类型可以是任何整数类型。如果您没有指明一个,它将默认为int32。强制转换是必要的,因为枚举没有明确的整数相等比较 - 仅适用于其他枚举。 被认为是现在明确投射的最佳做法。参见:
答案 1 :(得分:0)
是否必须将带有选定值的枚举强制转换为int?
完全不一定。你总是可以将int强制转换为枚举。
.Where(x => MyEnum.Sms == (MyEnum)x.MessageType)
或者,您可以将MessageType声明为MyEnum。然后就不会涉及整体。