2010-03-29 6 views
4

compte tenu de la ENUM suivante:entier Convertir ENUM à chaîne

public enum LeadStatus 
{ 
    Cold = 1, 
    Warm = 2, 
    Hot = 3, 
    Quote = 5, 
    Convert = 6 
} 

Comment puis-je convertir la valeur entière en chaînes de caractères quand je tire la valeur à partir d'une base de données. J'ai essayé:

DomainModel.LeadStatus status = (DomainModel.LeadStatus)Model.Status; 

mais tout ce que je semble obtenir est "status = 0"

Répondre

1

Une énumération en C# est utilisée pour fournir des noms pour certaines valeurs connues, mais toute valeur entière est autorisée dans cette énumération, qu'elle ait un équivalent nommé ou non.

Dans votre exemple, vous n'avez pas nommé de valeur zéro, mais votre variable status s'initialise à zéro. Je suppose qu'il n'a pas changé depuis cette valeur initiale au moment où vous l'avez lu. Par conséquent, sa représentation de chaîne est également 0 et vous analyserez zéro quand vous l'analyserez.

4

Ce que vous cherchez est Enum.Parse.

"Convertit la représentation sous forme de chaîne du nom ou de la valeur numérique d'une ou de plusieurs constantes énumérées en un objet énuméré équivalent."

Voici la page MSDN: http://msdn.microsoft.com/en-us/library/essfb559.aspx

Exemple:

enum Colour 
{ 
    Red, 
    Green, 
    Blue 
} 

// ... 
Colour c = (Colour) Enum.Parse(typeof(Colour), "Red", true); 

Avec l'aimable autorisation de http://blogs.msdn.com/tims/archive/2004/04/02/106310.aspx

+0

J'ai essayé que le premier et il m'a donné le même résultat: DomainModel. LeadStatus status = (DomainModel.LeadStatus) Enum.Parse (typeof (DomainModel.LeadStatus), Model.Status.ToString()); status = 0 – user216205

+1

Il n'y a pas d'index 0. Duh! – user216205

+0

Et Model.status était zéro? Je me demandais pourquoi cela ne fonctionnait pas, je pense qu'une distribution explicite d'entier à enum devrait fonctionner. – vfilby

2

Il suffit d'utiliser ToString() sur l'objet ENUM

+0

ToString() renvoie 0 – user216205

+0

Model.Status est-il également vide? Peut-être que vous ne lisez pas correctement la valeur de la base de données. ToString() devrait faire ce que vous voulez. –

3

Entre Enum.Parse et Enum.ToString, vous devriez être capable de faire tout ce dont vous avez besoin.

+0

Ceci est très utile, merci. Une note de côté à propos de 'Enum.Parse', vous devez utiliser' typeof() ', par ex. 'Enum.Parse (typeof (Couleurs)," bleu ");' – user1032613

1

Compte tenu de « Model.Status » est l'entier de la base de données, il peut être restauré à la valeur de chaîne Enum avec:

string status = Enum.GetName(typeof(DomainModel.LeadStatus), Model.Status); 
Questions connexes