Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I convert a string to an enum value to an integer? [duplicate]

Tags:

c#

enums

Possible Duplicate:
How do I Convert a string to an enum in C#?
Enums returning int value

I have declare an enumeration:-

public enum Car
        {
            SELECT = 0,
            AUDI = 1,
            NISSAN = 2,
            HONDA = 3,
            LINCOLN = 4
        } 

Now I need the int value of enum where it matches:-

private int GetCarType(string CarName)
        {
            foreach(var item in Enum.GetNames(typeof(Car))
            {
                if (item.ToLower().Equals(CarName.ToLower()))
                    //return int value of Enum of matched item; ???????
            }

Result expected:-

int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1;
Console.write(i);

Result :- 1

How will I get value of enum? And better coding practice.

like image 661
user1327064 Avatar asked Dec 12 '22 03:12

user1327064


2 Answers

If you are converting a string to an enum, you should use Enum.Parse rather than iterating over the names.

Then just cast to an integer:

var iAsInteger = (Int32)i;
like image 79
Chris Shain Avatar answered Apr 20 '23 00:04

Chris Shain


var result = (int)System.Enum.Parse(typeof(Car), carName)

http://msdn.microsoft.com/en-us/library/essfb559.aspx

This replaces your GetCarType function. You no longer have to iterate over the enum names.

like image 27
Robert Harvey Avatar answered Apr 19 '23 23:04

Robert Harvey