如何在 C# 中读取枚举 int 值(不通过转换转换)?
How to read enum int value (without converting via cast) in C#?
我有以下内容:
public enum SearchSex {
All = 0,
Male = 1,
Female = 2,
Other = 3
}
现在我有了这个,允许标志和位掩码:
public enum SearchSex {
All = 1,
Male = 2,
Female = 4,
Other = 8
}
在生产中,我希望所有设置在我们进行此更新时保持不变。所以我有一个脚本正在执行以下操作:
// for each user:
user.SearchSex= (SearchSex)(Math.Pow(2, (Convert.ToInt32(user.SearchSex) - 1)));
我在想 Convert.ToInt32 会 return 数据库中的(旧)实际整数值,但它试图将整数值映射到枚举定义中定义的那些(新)整数值。即使不再定义任何相应的 Enum 值,我该如何按原样读取原始整数值?
为什么不直接在数据库上执行查询?像
UPDATE usertable SET SearchSex = POWER(2, SearchSex);
当然,我建议你先运行一个select查询。
SELECT *, Power(2, SearchSex) AS NewSearchSex FROM usertable;
我有以下内容:
public enum SearchSex {
All = 0,
Male = 1,
Female = 2,
Other = 3
}
现在我有了这个,允许标志和位掩码:
public enum SearchSex {
All = 1,
Male = 2,
Female = 4,
Other = 8
}
在生产中,我希望所有设置在我们进行此更新时保持不变。所以我有一个脚本正在执行以下操作:
// for each user:
user.SearchSex= (SearchSex)(Math.Pow(2, (Convert.ToInt32(user.SearchSex) - 1)));
我在想 Convert.ToInt32 会 return 数据库中的(旧)实际整数值,但它试图将整数值映射到枚举定义中定义的那些(新)整数值。即使不再定义任何相应的 Enum 值,我该如何按原样读取原始整数值?
为什么不直接在数据库上执行查询?像
UPDATE usertable SET SearchSex = POWER(2, SearchSex);
当然,我建议你先运行一个select查询。
SELECT *, Power(2, SearchSex) AS NewSearchSex FROM usertable;