C#字典添加顺序错误的条目
我在RoutingList中添加了一个新项目,但在第一次删除后,订单是错误的C#字典添加顺序错误的条目,c#,windows-phone-8,dictionary,C#,Windows Phone 8,Dictionary,我在RoutingList中添加了一个新项目,但在第一次删除后,订单是错误的 public Dictionary<int, Route> RoutingList = new Dictionary<int, Route>(); 默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用 或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列: List<Route> routes;
public Dictionary<int, Route> RoutingList = new Dictionary<int, Route>();
默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用 或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列:
List<Route> routes;
Route route = routes[key];
列出路由;
路线=路线[钥匙];
默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用
或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列:
List<Route> routes;
Route route = routes[key];
列出路由;
路线=路线[钥匙];
你不能依赖字典中项目的顺序。如果您需要删除具有最低id的条目,OrderedDictionary的替代方案是更改您的查询(我不是100%确定这会编译,因为我现在没有可用的VS,但您知道了):
你不能依赖字典中项目的顺序。如果您需要删除具有最低id的条目,OrderedDictionary的替代方案是更改您的查询(我不是100%确定这会编译,因为我现在没有可用的VS,但您知道了): 根据: 字典的容量是字典可以容纳的元素数。当元素添加到字典中时,通过重新分配内部数组,容量会根据需要自动增加 这听起来像是ArrayList的行为,其中不维护顺序。从字典中删除项时,内部数组的大小不会减小。因此,索引在您删除的项目处保持打开状态,直到下一个项目被添加到该空索引中。根据: 字典的容量是字典可以容纳的元素数。当元素添加到字典中时,通过重新分配内部数组,容量会根据需要自动增加
这听起来像是ArrayList的行为,其中不维护顺序。从字典中删除项时,内部数组的大小不会减小。因此,索引在您删除的项目处保持打开状态,直到下一个项目被添加到该空索引中。如何删除?按键?是的,按具有此行的键:RoutingList.Remove(RoutingList.First().key);如何删除?按键?是的,按具有此行的键:RoutingList.Remove(RoutingList.First().key);很抱歉无法使用OrderedDictionary,因为它在Windows Phone 8框架中不可用。但是,我认为没有字典钥匙是个好主意。我不需要密钥。@6EQUJ5HD209458b:很高兴它有帮助-我不完全了解W8 phone框架-是否有您使用的名称空间/类的MSDN站点?通常的.NET Framework one似乎没有电话过滤器。对不起。无法使用OrderedDictionary,因为它在Windows Phone 8框架中不可用。但是,我认为没有字典钥匙是个好主意。我不需要密钥。@6EQUJ5HD209458b:很高兴它有帮助-我不完全了解W8 phone框架-是否有您使用的名称空间/类的MSDN站点?通常的.NETFrameworkOne似乎没有电话过滤器。
if (RoutingList.Count == 5)
{
RoutingList.Remove(RoutingList.Keys.Min());
}