我有一个字典对象:
Dictionary<string, string[]> dictCompanies = new Dictionary<string, string[]>();
如何根据键对该对象进行排序?
我试过像下面这样使用 OrderBy,但它似乎不起作用
dictCompanies .OrderByDescending(c=> c.Key);
我将这个字典对象绑定(bind)到 aspx 页面中的复选框列表。
我尝试使用委托(delegate)对这个 ListItemCollection 进行排序...但仍然没有成功...
我是不是漏掉了什么?
谢谢
最佳答案
您无法对实际的 Dictionary<TKey,TValue>
进行排序- 从中出来的订单项目基本上是由内部实现决定的。你可能想看看 SortedDictionary<TKey,TValue>
和 SortedList<TKey,TValue>
虽然 - 他们仍然有键/值查找,但允许您根据键进行排序。您可以指定自己的 IComparer<T>
如果您想以特定方式按键订购。
另一种选择(取决于您的情况)是在您需要它之前坚持使用字典 - 然后将其复制到列表中并在绑定(bind)到控件之前对其进行排序。显然,此时您需要在每次发生任何更改时刷新绑定(bind),但这对您来说可能不是问题。
如果您的 OrderBy 语句真的像那样独立,顺便说一句,您需要了解 LINQ 运算符总是运算符总是采用一个序列并返回一个不同的序列(或聚合结果)——它们从不修改中的序列-地方。事实上,他们不能像IEnumerable<T>
是只读接口(interface)。
关于c# - 对字典对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472137/