1

私は列挙型を持っています:

public enum Days
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
}

この列挙型を使用して、値を int として ID としてデータベースに挿入します。enum Daysしかし、データベースから値を取得して、ビューにそのデータベース ID の代わりに曜日の名前を表示するときに、そのデータベース ID を使用して「マップ」するにはどうすればよいでしょうか?

たとえば、データのリストが表示されていて、現在 DayId と ID が表示されていますが、この ID をマップして、ID(1,2,3.. ) ?

4

5 に答える 5

1

特別なことは何も必要ありません。データベースから取得した整数を列挙型にキャストできます。

int valueFromDB = 4;
Days enumValue = (Days)valueFromDB;
于 2013-10-15T03:45:30.533 に答える
0

次の拡張メソッドを使用するだけでEnum.ToObject(typeof(Days), item)役立ちます。

private List<string> ConvertIntToString(Enum days, params int[]  daysIds)
{
    List<string> stringList = new List<string>();

    foreach (var item in daysIds)
    {
        stringList.Add(Enum.ToObject(days.GetType(), item).ToString());
    }

    return stringList;
}

次のように使用します。

ConvertIntToString(new Days(),2, 4, 6, 1);

また

        private List<Enum> ConvertIntToString(params int[] daysIds)
        {
            List<Enum> EnumList = new List<Enum>();
            foreach (var item in daysIds)
            {
                EnumList.Add((Days)item);
            }
            return EnumList;
        }
于 2013-10-15T07:30:54.003 に答える
0

このアプローチはお勧めしません。数日間のルックアップ テーブルが必要です。例えば

create table Days(
 DaysID INT PRIMARY KEY,
 Name VARCHAR(20))

他のすべてのテーブルには、DaysID の外部キー列があります。私があなたのアプローチに反対することを提案する理由は、変更される可能性のあるハードコードされた値に自分自身を制限しているためです。

必要に応じて、Days テーブルをList<KeyValuePair<int, string>>. そのままにしておくと、データベースを見ている人は、DaysID 1、2、3、4 などの意味を知ることができません。

これが役立つことを願っています。

于 2013-10-15T04:38:41.877 に答える