我喜欢这样的
public enum PetType
{
Dog = 1,
Cat = 2
}
我也有string pet = "Dog"
。我怎么回1?我正在考虑的伪代码是:
select Dog_Id from PetType where PetName = pet
答案 0 :(得分:15)
使用Enum.Parse
方法从字符串中获取枚举值,然后转换为int:
string pet = "Dog";
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet);
int petValue = (int)petType;
答案 1 :(得分:4)
如果您使用的是.Net 4,则可以使用Enum.TryParse
PetType result;
if (Enum.TryParse<PetType>(pet, out result))
return (int)result;
else
throw something with an error message
答案 2 :(得分:4)
其他人已经建议使用Enum.Parse()但要小心这个方法,因为它不仅解析枚举的名称,而且还试图匹配其值。 为了清楚起见,我们来看看小例子:
PetType petTypeA = (PetType)Enum.Parse(typeof(PetType), "Dog");
PetType petTypeB = (PetType)Enum.Parse(typeof(PetType), "1");
两个解析调用的结果都是PetType.Dog(当然可以转换为int)。
在大多数情况下,这种行为都可以,但并非总是如此,这值得记住Enum.Parse()方法的行为。
答案 3 :(得分:0)
(PetType)Enum.Parse(typeof(PetType), pet)
答案 4 :(得分:0)
您可以使用字符串作为参数,如
int pet=1;
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet.ToString());
或者
string pet="Dog";
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet);