如何在C#中读取enum int值(不通过强制转换)?

时间:2015-03-01 04:09:29

标签: c# entity-framework tsql enums

我有以下内容:

public enum SearchSex {
    All = 0,
    Male = 1,
    Female = 2,
    Other = 3
}

现在我有了这个,允许Flags和bitmasking:

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会从数据库中返回(旧的)实际整数值,但是它试图将整数值映射到Enum定义中定义的那些(new)。即使不再定义任何相应的Enum值,我如何按原样读取原始整数值?

1 个答案:

答案 0 :(得分:0)

为什么不在数据库上执行查询?像

这样的东西
UPDATE usertable SET SearchSex = POWER(2, SearchSex);

当然,我建议您先运行一个选择查询。

SELECT *, Power(2, SearchSex) AS NewSearchSex FROM usertable;