C# 查找两个枚举值

C# 查找两个枚举值,c#,dictionary,enums,C#,Dictionary,Enums,[丙] 你好 最好的解决方案是使用查找或dict之类的东西,将int键与枚举表示的两个值相匹配,即dict之类的东西? 我需要获取这两个枚举并找到它们的关联整数。 我正在寻找最好的方法。 我发现新对象的创建可能是表示这两个枚举或使用元组。我还发现了类似于osmething的查找结构,但我仍然不知道什么是最好的方法,因为我是新手 int enumNumber = (int) exampleenum.keyA; 因此,对于以下情况,enumNumber将强制转换为1 private enum ex

[丙] 你好 最好的解决方案是使用查找或dict之类的东西,将int键与枚举表示的两个值相匹配,即dict之类的东西? 我需要获取这两个枚举并找到它们的关联整数。 我正在寻找最好的方法。
我发现新对象的创建可能是表示这两个枚举或使用元组。我还发现了类似于osmething的查找结构,但我仍然不知道什么是最好的方法,因为我是新手

int enumNumber = (int) exampleenum.keyA;
因此,对于以下情况,enumNumber将强制转换为1

private enum exampleenum
{
    KeyA = 1,
    KeyB = 2,
    KeyC = 3,
    KeyD = 4
}
字典不能有两个值,它是一个is键值对2。要使用具有两个值的字典,您需要为两个枚举创建一个自定义对象

我不确定在性能方面这会有什么影响,您可能希望改为使用元组

示例对象

class EnumObject
{
    public Enum Enum1 { get; set; }
    public Enum Enum2 { get; set; }
}
填充字典

        Dictionary<int, EnumObject> dic = new Dictionary<int, EnumObject>()
        {
            {1, new EnumObject() { Enum1 = exampleenum.KeyA, Enum2 = exampleenum.KeyB }},
            {2, new EnumObject() { Enum1 = exampleenum.KeyA, Enum2 = exampleenum.KeyC }},
            {3, new EnumObject() { Enum1 = exampleenum.KeyA, Enum2 = exampleenum.KeyD }}
        };

你能提供一些例子,一些代码来说明我们将要实现什么吗?这就像一个枚举用于描述,另一个枚举用于某种类型。我想要实现的是获取特定描述和类型的int值。例如,对于desc=sth和type=xyz,我想得到反射的int-idUse Enum.Parse:Enum.ParsetypeofProgram,Enum-name我在下面回答如何快速从C中的枚举中得到int,但是如果你想要更具体的答案,你需要像上面提到的那样添加更多的细节。嗨,瑞克!这不是关于获取int键,而是获取和int,这将是由枚举表示的两个值的键。类似DictOK的东西现在,我理解你了,你想要基于两个枚举的字典中的key int,你应该可以用Linqq实现这一点,但是你不能在字典中有两个值,你需要为你的两个枚举创建一个自定义对象。字典是键值对,三个值就是一个元组。是的,正是因为字典的限制,这是我考虑过的选项之一。正如你提到的,我还考虑过使用元组、单独的对象或查找结构。我只是不确定哪种方法是最好的,我不知道程序的上下文,但可能一个元组和linq是最好的解决方案?无论如何,我已经用一个为你定制的对象在字典的答案上注明了日期。
        int Key = dic.FirstOrDefault(x => x.Value == new EnumObject() { Enum1 = exampleenum.KeyA, Enum2 = exampleenum.KeyB }).Key;