【发布时间】:2015-07-29 18:25:49
【问题描述】:
我有一本这样的字典:
Dictionary<string, string[]> dic = new Dictionary<string,string[]>(){
{"A", new string [] {"1", "2", "$", "3", "4"}},
{"B", new string [] {"5", "6", "$", "7", "8"}},
{"C", new string [] {"9", "10", "@", "11", "12"}}
};
我想把它变成一个像这样的新字典:
Dictionary<string, List<string[]>> res = new Dictionary<string,List<string[]>>{
{"$", new List<string[]> {
new string [] {"1", "2", "A", "3", "4"},
new string [] {"5", "6", "B", "7", "8"}
}
},
{"@", new List<string[]> {
new string [] {"9", "10", "C", "11", "12"}
}
}
};
所以新的Key成为旧字符串数组的第三个元素,旧的Key被添加到新的字符串数组中。
注意 - 旧 Key 不需要作为新数组的第三个元素放置,但它确实需要在每个新数组的相同索引中。
我开始尝试为此使用一些 LINQ,但无法理解整个事情 - 这个:
Dictionary<string, string[]> test = dic.GroupBy(x => x.Value[2])
.ToDictionary(s => s.Key, s => s.Select(x => x.Key).ToArray());
仅适用于创建另一个字符串键控数组值字典,其中键正确成为第三个元素,但值只是旧键。
【问题讨论】:
标签: c# arrays linq dictionary