如何使用LINQ枚举词典

时间:2013-03-25 00:20:57

标签: c# .net linq

我有以下

private enum Properties
{ one, two, three }

private Dictionary <Properties, String> PropertyToString;
private Dictionary <String, Properies> StringToProperty;

如何使用LINQ填充每个词典,以便我可以使用以下内容?是否有一行LINQ语句可以填充每个?

Properties MyResult = StringToProperty["One"];
String MySResult = PropertyToString[Properties.One];

我特别想在第二种情况下使用actaull属性进行索引。

1 个答案:

答案 0 :(得分:3)

你可以这样做:

private Dictionary<Properties,String> PropertyToString = Enum
    .GetValues(typeof(Properties))
    .Cast<Properties>().
    .ToDictionary(v => v, v => Enum.GetName(typeof(Properties), v));

private Dictionary<String,Properties> StringToProperty = Enum
    .GetValues(typeof(Properties))
    .Cast<Properties>().
    .ToDictionary(v => Enum.GetName(typeof(Properties), v), v => v);

请注意,PropertyToString字典是不必要的,因为您可以这样做:

String MySResult = Enum.GetName(typeof(Proeprties), Properties.One);