2008-11-21 20 views
220

tengo una enumeración construir de esta manera:Nombre enumeración de la cadena de valor

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

En mi base de datos, las enumeraciones son referenciados por valor. Mi pregunta es, ¿cómo puedo convertir la representación numérica de la enumeración en el nombre de la cadena?

Por ejemplo, dada 2 el resultado debería ser Visible.

+5

creo, ahora hay una manera más fácil de hacer esto con VS 2015 'nombredel (EnumDisplayStatus.Visible)' espero que ayude a alguien –

Respuesta

314

Se puede convertir el int de nuevo a un miembro de la enumeración con un reparto simple, y luego llamar a ToString():

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

Actualización: sólo ciertas sobrecargas utilizando IFormatProvider están en desuso. ToString() está bien. Consulte http://groups.google.com/group/DotNetDevelopment/browse_thread/thread/dcdbeae086360208 – AndyM

+0

¿Cuál es el comportamiento en el caso de 'enum Foo {A = 1, B = 1}'? – dbkk

+2

@dbkk la documentación indica que con respecto a las enumeraciones "su código no debe hacer suposiciones sobre qué cadena se devolverá". debido a la situación precisa que citas vea http://msdn.microsoft.com/en-us/library/16c1xs4z.aspx –

15

puede simplemente echarlo

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

ah .. Kent me adelantó it :)

0

Simplemente arroje el int al tipo de enumeración:

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

DB para C#

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

C# para DB

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

Prueba esto:

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

Esta debería ser la respuesta. – niico

112

Si necesita obtener una cadena "Visible" sin conseguir EnumDisplayStatus ejemplo, usted puede hacer esto :

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

Esta respuesta ya está publicada (curiosamente usted tiene más votos) .. – nawfal

+2

Si acerca de la respuesta de Mandoleen hay una inexactitud: Enum.GetName devuelve una cadena, no un Enum – algreat

+0

oh sí, tiene razón, entonces +1 para usted también :) – nawfal

Cuestiones relacionadas