我有一大堆值的枚举(这里只显示了三个):
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>...
}
这可能是一件简单的事情,但我似乎不时碰到这一点,而不是弄清楚,我最终只是使用一个词典...无论如何,它就是,谢谢
答案 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());