Есть ли способ извлечь номер Enum (int) из переменной, которая получает элемент Enum из списка? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь сравнить элемент enum со значением базы данных;Сравнение имен (Значение) работает хорошо, но имена подлежат изменению, поэтому я должен сравнивать по идентификаторам, поэтому я назначил числа каждому элементу перечисления;

Проверка сравнения включает в себя получение случайного элемента из списканекоторых (не всех) значений расширения строки указанного перечисления.

Есть ли способ получить присвоенный номер элемента или хотя бы индекс после того, как случайная величина (randomElemnt) установлена?

Я пытался создать другую переменную

var randomElemntId = (ProductName)Enum.Parse(typeof(ProductName),randomElemnt);

Приведение к типу int также не дало желаемого результата.

Это мой пример enum с расширением строки Значение

//Value is a string extension
public enum ProductName
    {
        [Value("Product1")] Product1 = 2,
        [Value("Product2")] Product2 = 3,
        [Value("Product3")] Product3 = 4,
        [Value("Product4")] Product4 = 1,
        [Value("None")] None = 0
    }

Пример списка, который я использую.Обратите внимание, что не все элементы enum присутствуют;Переменная, которая получает случайный элемент списка

//contains some enum values
     var Products = new List<string>
            {
                ProductName.Product1.GetValue(),
                ProductName.Product2.GetValue(),
                ProductName.Product3.GetValue(),

            };

//returns random element from the list
var randomElemnt = Products.RandomElement();

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Я нашел ответ на свой вопрос:

Прежде всего, List<string> было плохо в моем случае, поэтому я создал список:

var Products = new List<ProductName>
            {
                ProductName.Product1,
                ProductName.Product2,
                ProductName.Product3,

            };

Затем,моя переменная var randomElemnt = Products.RandomElement(); стала нечленовым элементом enum. После этого я смог извлечь enum int с помощью другой переменной var randomElmntId = (int)randomElmnt;, хотя все еще мог работать с randomElmnt

Спасибо всем за ваш вклад, который сделаля пришел к этому решению.

0 голосов
/ 17 мая 2019

Код ниже показывает, как преобразовать число в строку и строку в число:

        public enum ProductName
        {
            Product1 = 2,
            Product2 = 3,
            Product3 = 4,
            Product4 = 1,
            None = 0
        }

        static void Main(string[] args)
        {
            Random rand = new Random();
            List<ProductName> products = Enumerable.Range(0,10).Select(x => (ProductName)rand.Next(0,5)).ToList();
            string[] names = products.Select(x => x.ToString()).ToArray();

        }
...