从数据库查询生成枚举

本文关键字:枚举 查询 数据库 | 更新日期: 2023-09-27 18:18:10

我想有一个从数据库查询建立的Enum,我被困在如何做到这一点。我的想法是有一个方法,返回一个字符串列表,并使用它来填充枚举,但我不确定这是否可能或正确的方式去做。构建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;
        }
    }

从数据库查询生成枚举

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

private List<DrugColor> BuildEnum()

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

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

当你从数据库中获取数据时,每个read()是一个颜色,所以颜色名称是一个DrugColor

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

将字符串解析为enum。

然后添加到列表

瞧!

编辑:

你的enum应该包含以下内容:

enum DrugColor
{
  Red,
  Blue,
  Yellow
}

枚举在设计时创建。简而言之,您不会在运行时实例期间生成枚举,因此您是在描述代码编写代码的需求。有多少种不同的药物颜色?看起来手工完成也很容易。