对字典对象进行排序

use*_*907 1 c#

我有一个字典对象:

Dictionary<string, string[]> dictCompanies = new Dictionary<string, string[]>();
Run Code Online (Sandbox Code Playgroud)

如何在键上对此对象进行排序?

我尝试使用下面的OrderBy,但它似乎没有用

dictCompanies .OrderByDescending(c=> c.Key); 
Run Code Online (Sandbox Code Playgroud)

我将这个字典对象绑定到aspx页面中的checkboxlist.

我尝试使用委托对这个ListItemCollection进行排序......但仍然没有运气......

我错过了什么吗?

谢谢

Jon*_*eet 11

您不能对实际进行排序Dictionary<TKey,TValue>- 来自它的订单项基本上由内部实现决定.你可能想看看SortedDictionary<TKey,TValue>SortedList<TKey,TValue>虽然-他们仍然有键/值查找,但让你基于键进行排序.IComparer<T>如果您想以特定方式按键排序,则可以指定自己的.

另一种选择(取决于你的情况)是坚持字典直到你需要它 - 然后将其复制到列表中并在绑定到控件之前对其进行排序.显然,此时你需要在每次更改时刷新绑定,但这对你来说可能不是问题.

如果您的OrderBy语句本身就是这样,那么顺便说一句,您需要了解LINQ运算符始终是运算符总是采用序列并返回不同的序列(或聚合结果) - 它们永远不会就地修改序列.实际上,它们不能像IEnumerable<T>只读界面那样.