当所有值都存储在数据库字段中时,如何从枚举中获取字符串值列表

时间:2015-03-15 21:37:33

标签: c#

假设我有以下枚举,它们表示可以分配给对象的属性组合。

public enum ObjectFlags
    {
        None = 0,
        Red = 1 << 0,   // 1
        Square = 1 << 1,   // 2
        Small = 1 << 2,   // 4
        Fast = 1 << 3,   // 8
    }

我将所有选定的属性存储在名为ObjectFlag的SQL数据库字段中:

假设我将Red和Small枚举传递给SaveOjectFlags方法并且 在字段中使用按位存储整数组合。

 public ActionResult SaveOjectFlags(List<string> myflags)

{
     ObjectFlags = myFlags;     foreach(ObjectFlags中的var标志)      {
    mydatabaseTable.ObjectFlag + =(int)Enum.Parse(typeof(ObjectFlags),flag);        _dbRepo.Save();     } }

现在我希望从我的数据库中的ObjectFlags字段中获取值,并将枚举作为字符串列表获取:

我尝试过以下哪些方法不起作用:

var test = (ObjectFlags)mydatabaseTable.ObjectFlag;

上面变量test的值不是来自枚举

的字符串列表

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

请参阅here.

解决方案是:

[Flags]
public enum ObjectFlags
{
    None = 0,
    Red = 1 << 0,   // 1
    Square = 1 << 1,   // 2
    Small = 1 << 2,   // 4
    Fast = 1 << 3,   // 8
}

答案 1 :(得分:0)

我需要做的就是添加[Flags]属性,如Jon Skeet建议的那样