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 に答える