从数据库查询构建枚举

时间:2013-06-13 16:28:33

标签: c# asp.net visual-studio-2010

我希望有一个从数据库查询构建的枚举,我坚持如何做到这一点。我的想法是有一个方法返回一个字符串列表并使用它来填充枚举,但我不确定这是否可能或正确的方法。 Enum将构建的表格很少会发生变化。有什么好办法来实现这个目标?

enum DrugColor
    {

    }
    private List<string> BuildEnum()
    {
        List<string> EnumList = new List<string>();
        using (SqlConnection con = new SqlConnection(cs))
        {
            using (SqlCommand cmd = new SqlCommand("select color from DrugColors", con))
            {
                con.Open();
                cmd.CommandType = CommandType.Text;
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    string colorName;
                    colorName = rdr["Color"].ToString();
                    EnumList.Add(colorName);
                }
            }
            return EnumList;
        }
    }

2 个答案:

答案 0 :(得分:3)

所以你的函数应该返回一个枚举列表:

private List<DrugColor> BuildEnum()

这是第一件事。 当您声明返回的列表时,也将其更改为枚举列表:

List<DrugColor> EnumList = new List<DrugColor>();

从数据库中获取数据时,每个read()都是一种颜色,因此颜色名称为DrugColor

DrugColor colorName;
colorName = new DrugColor{(DrugColor)Enum.Parse(typeof(DrugColor ),rdr["Color"].ToString()); }

使用此方法将字符串解析为枚举。

然后将其添加到列表

瞧!

编辑:

你的枚举应包含的内容:

enum DrugColor
{
  Red,
  Blue,
  Yellow
}

答案 1 :(得分:1)

枚举是在设计时创建的。简而言之,您不会在运行时实例期​​间生成枚举,因此您需要描述代码编写代码的需求。有多少种不同的药物颜色?看起来这样就可以轻松完成。