2008-11-21 10 views
220

J'ai une ENUM construction comme celui-ci:Enum Nom chaîne de valeur

public enum EnumDisplayStatus 
{ 
    None=1, 
    Visible=2, 
    Hidden=3, 
    MarkedForDeletion=4 
} 

Dans ma base de données, les énumérations sont référencées par valeur. Ma question est, comment puis-je retourner la représentation numérique de l'enum au nom de la chaîne. Par exemple, étant donné 2, le résultat devrait être Visible.

+5

Je crois, maintenant il est un moyen plus facile de le faire avec VS 2015 'NomDe (EnumDisplayStatus.Visible)' Hope it helps quelqu'un –

Répondre

314

Vous pouvez convertir le int retour à un membre de l'énumération avec un simple casting, puis appelez ToString():

int value = GetValueFromDb(); 
EnumDisplayStatus enumDisplayStatus = (EnumDisplayStatus)value; 
string stringValue = enumDisplayStatus.ToString(); 
+11

Mise à jour: seuls certains à l'aide IFormatProvider sont surcharges déconseillés. ToString() est bien. Voir http://groups.google.com/group/DotNetDevelopment/browse_thread/thread/dcdbeae086360208 – AndyM

+0

Quel est le comportement en cas de 'enum Foo {A = 1, B = 1}'? – dbkk

+2

@dbkk La documentation indique qu'en ce qui concerne l'énumération "votre code ne doit pas faire d'hypothèses sur la chaîne qui sera retournée." à cause de la situation précise que vous citez. voir http://msdn.microsoft.com/en-us/library/16c1xs4z.aspx –

15

vous pouvez juste jeter

int dbValue = 2; 
EnumDisplayStatus enumValue = (EnumDisplayStatus)dbValue; 
string stringName = enumValue.ToString(); //Visible 

ah .. kent m'a battu à it :)

0

juste jeté l'int au type d'énumération:

EnumDisplayStatus status = (EnumDisplayStatus) statusFromDatabase; 
string statusString = status.ToString(); 
7

DB C#

EnumDisplayStatus status = (EnumDisplayStatus)int.Parse(GetValueFromDb()); 

C# DB

string dbStatus = ((int)status).ToString(); 
81

Essayez ceci:

string m = Enum.GetName(typeof(MyEnumClass), value); 
+9

Cela devrait être la réponse. – niico

112

Si vous avez besoin pour obtenir une chaîne "Visible" sans obtenir EnumDisplayStatus exemple, vous pouvez faire :

int dbValue = GetDBValue(); 
string stringValue = Enum.GetName(typeof(EnumDisplayStatus), dbValue); 
+0

Cette réponse est déjà postée (étrangement vous avez plus de votes) .. – nawfal

+2

Si vous sur la réponse de Mandoleen il y a une inexactitude: Enum.GetName renvoie une chaîne, pas un Enum – algreat

+0

oh oui, vous avez raison, donc +1 pour vous aussi :) :) – nawfal

Questions connexes