有什么方法可以从从列表中获取枚举元素的变量中提取枚举编号(int)?

Is there any way to pull Enum number(int) from a variable which gets an Enum element from a list?

我正在尝试将枚举元素与数据库值进行比较; 比较名称(值)工作正常,但名称可能会发生变化,因此我必须按 ID 进行比较,这就是为什么我为每个枚举元素分配数字的原因;

测试比较包括从所述枚举的一些(不是全部)字符串扩展值列表中获取随机元素。

设置随机变量(randomElemnt)后,有没有办法获取元素的分配编号或至少索引?

我尝试创建另一个变量

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

转换为 int 也没有产生理想的结果。

这是我的枚举示例,带有字符串扩展值

//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
    }

我使用的列表示例。请注意,并非所有枚举元素都存在;获取列表随机元素的变量

//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();

我找到了问题的答案:

首先,List<string> 对我来说是不好的事情,所以我创建了列表:

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

            };

然后,我的变量var randomElemnt = Products.RandomElement();变成了non-string枚举成员 之后我能够通过另一个变量提取 enum int var randomElmntId = (int)randomElmnt; 同时仍然可以使用 randomElmnt

感谢大家的贡献,让我想到了这个解决方案。

下面的代码展示了如何将数字转换为字符串以及如何将字符串转换为数字:

        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();

        }