2013-03-27 18 views
1

谢谢所有回答我的最后一个问题并贡献自己的人。我遇到了一个LINQ问题的另一个有趣的化身...所以像以前一样......另一个如何使用LINQ枚举字典

我有以下

const String A_CONVERSATION = "AD Channels"; 
const String NOT_REPUTABLE = "AD Resolution"; 
const String DO_NOT_KNOW = "Capture Input"; 

private enum Properties 
{ MyHow, Thats, It } 

List<String> MyList = new List<string> 
{ 
    A_CONVERSATION, 
    NOT_REPUTABLE, 
    DO_NOT_KNOW 
} 


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

我如何使用LINQ来填充每个字典,这样我可以使用以下内容?是否有一行LINQ语句将填充每个?

Properties MyResult1 = StringToProperty[A_CONVERSATION]; 
String MySResult2 = PropertyToString[Properties.It]; 

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

回答

0

提供了这是你想要的...

在两个语句(一个可以合并我通过查找一些莫名其妙猜测 - 但我不认为这是有关 - 不是一切都必须在一个行:)

var properties = ((Properties[])Enum.GetValues(typeof(Properties))).ToList(); 
var propertyToString = properties.Zip(MyList, (p, s) => new { Prop = p, Text = s }).ToDictionary(x => x.Prop, x => x.Text); 
var stringToProperty = properties.Zip(MyList, (p, s) => new { Prop = p, Text = s }).ToDictionary(x => x.Text, x => x.Prop); 

我刻意区隔的枚举的气质 - 为清楚 - 你可以移动到一个行,如果你愿意的话。

+0

这将使用奇怪的字符串列表列表 MyList ...? – 2013-03-27 01:43:03

+0

你在'Zip'中有'MyList' - 不确定究竟是什么'两难'? – NSGaga 2013-03-27 01:44:22

+0

它使一对一的先到先,二到二...如果不同 - 或者这是可以从Q – NSGaga 2013-03-27 01:45:20