2014-03-12 169 views
0

我有一个字符串列表这样["saman=1", "kaman=2"] 我如何可以将其转换为一个字典一样{Saman:1 , kaman:2}转换字符串列表字典

strList.Select(k,v =>new {k,v} , k=> k.split('=')[0], val => v.split('=')[1]); 

回答

5

这应该工作:

strList.ToDictionary(x => x.Split('=')[0], x => x.Split('=')[1]) 

如果你想Dictionary<string, int>您可以将Value解析为整数:

strList.ToDictionary(x => x.Split('=')[0], x => int.Parse(x.Split('=')[1])) 
1

您应该首先拆分", ",然后将每个项目拆分=以获取键/值对。

附加Trim调用将在输入字符串的末尾排除[",并在您的输入字符串末尾排除"]

var input = @"[""saman=1"", ""kaman=2""]"; 

var dict = input.Trim('[', '"', ']') 
       .Split(new [] {@""", """}, StringSplitOptions.RemoveEmptyEntries) 
       .Select(x => x.Split('=')) 
       .ToDictionary(x => x[0], x => x[1]); 
0

非常,非常简单地使用LINQ:

IDictionary<string, string> dictionary = 
    list.ToDictionary(pair => pair.Key, pair => pair.Value); 

需要注意的是,如果有任何重复键,这将失败 - 我认为这是好吗?

+0

这是行不通的。因为他有一个'List '而不是'List '' –