tags:

views:

102

answers:

4

I have an enum of type int:

public enum BlahType
{
       blah1 = 1,
       blah2 = 2
}

If I have a string:

string something = "blah1"

How can I convert this to BlahType?

+6  A: 

You want Enum.Parse

BlahType blahValue = (BlahType) Enum.Parse(typeof(BlahType), something);
Winston Smith
+8  A: 

I use a function like this one

public static T GetEnumValue<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value);
}

And you can call it like this

BlahType value = GetEnumValue<BlahType>("Blah1");
Pierre-Alain Vigeant
Me too... very very useful!
Simon Gillbee
A: 
    public enum BlahType
    {
        blah1 = 1,
        blah2 = 2
    }

    string something = "blah1";
    BlahType blah = (BlahType)Enum.Parse(typeof(BlahType), something);

If you are not certain that the conversion will succeed - then use TryParse instead.

Philip Wallace
+2  A: 

I use this function to convert a string to a enum; then you can cast to int or whatever.

public static T ToEnum<T>(string value, bool ignoreUpperCase)
  where T : struct, IComparable, IConvertible, IFormattable {
  Type enumType = typeof (T);
  if (!enumType.IsEnum) {
   throw new InvalidOperationException();
  }
  return (T) Enum.Parse(enumType, value, ignoreUpperCase);
}
Jhonny D. Cano -Leftware-
Nice extension method. I just wonder why should it ignore uppercase only rather than just ignore case? ;)
Fredrik Mörk
When I first did that function, I though about checking for if the given type was an enum. I gave up after discovering (with reflector) that Enum.Parse already do these check (and more) and throw a ArgumentException if the type is not an enum.
Pierre-Alain Vigeant
sorry, that's a spanish translation issue, it's just a wrapper for the overload of Enum.Parse
Jhonny D. Cano -Leftware-