Если ваше перечисление является целым числом, вы можете просто разыграть как таковое
int enumNumber = (int) exampleenum.keyA;
, поэтому для перечисленного ниже enumNumber будет приведено как 1.
private enum exampleenum
{
KeyA = 1,
KeyB = 2,
KeyC = 3,
KeyD = 4
}
Словарь не может иметь два значения, это пара ключ-значение (два). Чтобы использовать словарь с двумя значениями, вам нужно будет создать пользовательский объект для двух перечислений как.
Я не уверен, с какой производительностью это может повлиять на производительность, вы можете вместо этого изучить использование Tuple.
Пример объекта
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 }}
};
Затем вы можете использовать linq для поиска значения и ввода ключа.
int Key = dic.FirstOrDefault(x => x.Value == new EnumObject() { Enum1 = exampleenum.KeyA, Enum2 = exampleenum.KeyB }).Key;