我有字典 Dictionary
键是c1,c3,c2,t1,t4,t2我想将它们排序为c1,c2,c3,t1,t2,t3
我正在尝试使用它进行排序
Input.OrderBy(key => key.Key );
但它不起作用
任何想法如何解决这个问题
Input.OrderBy
不对字典进行排序,它会创建一个按订单顺序返回项目的查询.
也许OrderedDictionary可以为您提供所需的内容.
或使用Generic SortedDictionary
将未排序的对象加载到SortedDictionary对象中,如下所示:
SortedDictionarysortedCustomerData = new SortedDictionary (unsortedCustomerData);
其中unsortedCustomerData是相同的泛型类型(Dictionary字符串,字符串或在您的case字符串中,指向).它将按键自动对新对象进行排序
根据msdn:SortedDictionary(IDictionary):初始化SortedDictionary类的新实例,该实例包含从指定的IDictionary复制的元素,并使用默认的IComparer实现作为键类型.
只是一个猜测,但看起来你假设它将排序输入.OrderBy方法实际上返回包含相同值的IOrderedEnumerable的有序实例.如果您想保留返回值,可以执行以下操作:
IOrderedEnumerable orderedInput orderedInput = Input.OrderBy(key=>key.Key)
大多数修改集合的方法都遵循相同的模式.它这样做是为了不改变原始集合实例.这可以防止您在不打算时意外更改实例.如果您确实只想使用已排序的实例,那么您只需将变量设置为方法的返回值,如上所示.