C# 对字典对象排序

C# 对字典对象排序,c#,C#,我有一个字典对象: Dictionary<string, string[]> dictCompanies = new Dictionary<string, string[]>(); 我正在将此dictionary对象绑定到aspx页面中的复选框列表 我尝试使用委托对ListItemCollection进行排序…但仍然没有成功 我是不是遗漏了什么 谢谢您无法对实际订单进行排序-订单项的产生基本上取决于内部实现。您可能希望查看和尽管-它们仍然有键/值查找,但允许您根据键进行

我有一个字典对象:

Dictionary<string, string[]> dictCompanies = new Dictionary<string, string[]>();
我正在将此dictionary对象绑定到aspx页面中的复选框列表

我尝试使用委托对ListItemCollection进行排序…但仍然没有成功

我是不是遗漏了什么

谢谢

您无法对实际订单进行排序-订单项的产生基本上取决于内部实现。您可能希望查看和尽管-它们仍然有键/值查找,但允许您根据键进行排序。如果要以特定方式按键排序,可以指定自己的IComparer

根据您的情况,另一种选择是一直使用字典,直到您需要它为止,然后将它复制到列表中,并在绑定到控件之前对其进行排序。显然,在这一点上,每次更改任何内容时都需要刷新绑定,但这对您来说可能不是问题

如果OrderBy语句本身就是这样,顺便说一句,那么您需要了解LINQ运算符始终采用一个序列并返回不同的序列或聚合结果-它们从不在适当的位置修改序列。事实上,它们不能这样做,因为IEnumerable是一个只读接口。

您不能对实际值进行排序-从中产生的顺序项基本上由内部实现决定。您可能希望查看和尽管-它们仍然有键/值查找,但允许您根据键进行排序。如果要以特定方式按键排序,可以指定自己的IComparer

根据您的情况,另一种选择是一直使用字典,直到您需要它为止,然后将它复制到列表中,并在绑定到控件之前对其进行排序。显然,在这一点上,每次更改任何内容时都需要刷新绑定,但这对您来说可能不是问题

如果OrderBy语句本身就是这样,顺便说一句,那么您需要了解LINQ运算符始终采用一个序列并返回不同的序列或聚合结果-它们从不在适当的位置修改序列。事实上,由于IEnumerable是一个只读接口,因此它们不能使用

两者都有Olog n检索,主要区别在于内存使用以及插入和删除的速度:

SortedList使用的内存少于SortedDictionary。 SortedDictionary对于未排序的数据具有更快的插入和删除操作:对于SortedList,Olog n与On相反。 看一看和

两者都有Olog n检索,主要区别在于内存使用以及插入和删除的速度:

SortedList使用的内存少于SortedDictionary。 SortedDictionary对于未排序的数据具有更快的插入和删除操作:对于SortedList,Olog n与On相反。
为什么不使用分类列表?为什么不使用分类列表?
dictCompanies .OrderByDescending(c=> c.Key);