枚举:需要将枚举的名称,而不是其int值作为字符串

时间:2010-12-03 22:13:42

标签: c# enums

我有一大堆值的枚举(这里只显示了三个):

public enum LookupType
{
   Alignment,
   Language,
   ReEmbedBehavior
}

然后我有一个基于名为LookupType的varchar字段获取数据的方法...我想要的是将此方法的调用者限制为仅限于数据库中的查找类型...所以在我的WHERE结束时我希望枚举名称为字符串,而不是它的整数值。

然后,调用者将执行类似GetLookupsByLookupType(LookupType.Language)的操作,我的方法将调用为“where lookuptype ='Language'”

public List<Lookup> GetLookupsByLookupType(UnicornMedia.Core.DomainModel.Enumerations.LookupType lookupType)
        {
            var lookups = new List<Lookup>();
            string SQL = String.Format(@"Select id, name, value, lookuptype
                                         from lookups
                                         where lookuptype = '{0}'", lookupType.ToString());

            ...<snip>...                                         
        }

这可能是一件简单的事情,但我似乎不时碰到这一点,而不是弄清楚,我最终只是使用一个词典...无论如何,它就是,谢谢

6 个答案:

答案 0 :(得分:8)

简单地执行.ToString()会将枚举名称作为字符串值。

答案 1 :(得分:2)

您是否尝试过Enum.GetName

实际上,以下代码段显示只需调用ToString即可。

enum LookupType {
    Language
}
public class Program {
    public static void Main(string[] args) {
        string str = string.Format("{0}", LookupType.Language);
        // str = "Language"
        Console.WriteLine(LookupType.Language);
        // output: Language
    }
}

答案 2 :(得分:2)

尝试以下

string name = System.Enum.GetName(typeof(LookupType), LookupType.Language);

答案 3 :(得分:1)

您可以使用GetName方法(http://msdn.microsoft.com/en-us/library/system.enum.getname.aspx):

Enum.GetName(typeof(LookupType), lookupType);

答案 4 :(得分:1)

您不需要GetName ...

LookupType.Alignment.ToString();

就像你在代码中一样......

lookupType.ToString()

答案 5 :(得分:1)

您的代码应该可以正常工作。我运行了以下内容,字符串返回了预期的结果。

class Program
{
    static void Main(string[] args)
    {
        LookupType lookupType = LookupType.Language;

        Console.WriteLine(GetLookupsByLookupType(lookupType));

        Console.Read();
    }

    public static string GetLookupsByLookupType(LookupType lookupType)
    {
        string SQL = String.Format(@"Select id, name, value, lookuptype from lookups where lookuptype = '{0}'", lookupType.ToString());

        return SQL;                  
    }

}

public enum LookupType
{
    Alignment,
    Language,
    ReEmbedBehavior
}

确保您没有像上面显示的那样传递SQL字符串。将字符串放在一行上,或使用以下内容:

        string SQL = String.Format(@"Select id, name, value, lookuptype from " + 
            "lookups where lookuptype = '{0}'", lookupType.ToString());
相关问题