0

我想要一个从数据库查询构建的 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;
        }
    }
4

2 回答 2

2

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

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
}
于 2013-06-13T16:59:20.807 回答
1

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

于 2013-06-13T17:13:46.990 回答