我有一个字典对象:
DictionarydictCompanies = new Dictionary ();
如何在键上对此对象进行排序?
我尝试使用下面的OrderBy,但它似乎没有用
dictCompanies .OrderByDescending(c=> c.Key);
我将这个字典对象绑定到aspx页面中的checkboxlist.
我尝试使用委托对这个ListItemCollection进行排序......但仍然没有运气......
我错过了什么吗?
谢谢
您不能对实际进行排序Dictionary
- 来自它的订单项基本上由内部实现决定.你可能想看看SortedDictionary
和SortedList
虽然-他们仍然有键/值查找,但让你基于键进行排序.IComparer
如果您想以特定方式按键排序,则可以指定自己的.
另一种选择(取决于你的情况)是坚持字典直到你需要它 - 然后将其复制到列表中并在绑定到控件之前对其进行排序.显然,此时你需要在每次更改时刷新绑定,但这对你来说可能不是问题.
如果您的OrderBy语句本身就是这样,那么顺便说一句,您需要了解LINQ运算符始终是运算符总是采用序列并返回不同的序列(或聚合结果) - 它们永远不会就地修改序列.实际上,它们不能像IEnumerable
只读界面那样.