最近、Enumオブジェクトを値で取得する必要があるケースに遭遇しました (EF CodeFirst を介して保存するため)。これが私のEnumです。
public enum ShipmentStatus {
New = 0,
Shipped = 1,
Canceled = 2
}
したがって、値1ShipmentStatus.Shipped
でオブジェクトを取得する必要がありました。
では、どうすればそれを達成できますか?
最近、Enumオブジェクトを値で取得する必要があるケースに遭遇しました (EF CodeFirst を介して保存するため)。これが私のEnumです。
public enum ShipmentStatus {
New = 0,
Shipped = 1,
Canceled = 2
}
したがって、値1ShipmentStatus.Shipped
でオブジェクトを取得する必要がありました。
では、どうすればそれを達成できますか?
int
これは、次のいずれかで機能するはずです(値を型にキャストするだけですenum
):
int _val = 1;
ShipmentStatus _item = (ShipmentStatus)_val;
その列挙型が定義されていない場合、エラーが発生する可能性があることに注意してください。
列挙型とのいくつかの戦いの後、私はこれを作成しました-必要なことを実行するユニバーサルヘルパークラス-値ごとにキーを取得し、さらに重要なことに-任意の列挙型から:
public static class EnumHelpers {
public static T GetEnumObjectByValue<T>(int valueId) {
return (T) Enum.ToObject(typeof (T), valueId);
}
}
したがって、Enumオブジェクトを取得するには、次のShipmentStatus.Shipped
オブジェクトを返します。
var enumObject = EnumHelpers.GetEnumObjectByValue<ShipmentStatus>(1);
したがって、基本的に、任意のEnumオブジェクトを使用して、そのキーを値で取得できます。
var enumObject = EnumHelpers.GetEnumObjectByValue<YOUR_ENUM_TYPE>(VALUE);