【发布时间】:2017-02-09 16:51:49
【问题描述】:
我有一本字典(使用 C#):
Dictionary<List<string>, string> dictData = new Dictionary<List<string>, string>();
字典已经有值的地方(例如):
key: {"3", "1", "45"}, value: "test value 1"
key: {"1", "2", "45"}, value: "test value 2"
key: {"11", "1", "45"}, value: "test value 3"
key: {"1", "1", "45"}, value: "test value 4"
键是一个字符串列表,它总是至少有两个元素。我需要做的是按键对字典进行排序,或者更准确地说,按列表的第一个元素排序,并作为第二个标准按列表的第二个元素排序。字符串实际上是一个数字,所以它们应该按数字排序(“3”应该小于“11”)。所以对于上面的例子,我应该得到以下结果:
key: {"1", "1", "45"}, value: "test value 4"
key: {"1", "2", "45"}, value: "test value 2"
key: {"3", "1", "45"}, value: "test value 1"
key: {"11", "1", "45"}, value: "test value 3"
再次:如果键实际上是一个列表并且要由列表的第一个元素执行排序,然后由列表的第二个元素执行,我如何按键对字典进行排序?
【问题讨论】:
-
我强烈建议不要使用
List作为字典的键 -
如果键是数字并且需要这样处理,为什么要使用字符串列表?
-
除了不使用列表作为字典键之外:如果您真的需要,您可以使用带有自定义比较器的
SortedDictionary?
标签: c# linq list sorting dictionary