在词典的开头插入项目

时间:2013-07-10 17:09:37

标签: c# asp.net-mvc asp.net-mvc-partialview

我正在使用字典填充视图中的“选择”框。所有这一切都正常。但是,我需要在字典的开头添加一个附加选项,该选项将作为用户的提示并且值为-1。

我有以下代码......

Dictionary<int, string> acctMgr = new Dictionary<int, string>();
acctMgr = db.Users.Where(u => u.Title.Contains("Account Manager") || u.Title.Contains("Client Services Manager")).ToDictionary(v => v.ApplicationUserId, v => v.FullName);

...并尝试添加

acctMgr.Add(-1, "Choose one");

...但是它将它添加到列表的末尾(我不相信字典是/可以排序)。之后,我尝试在变量声明之后添加上面的行,但它被db.Users ...行替换。

思想?

2 个答案:

答案 0 :(得分:3)

字典不是有序的 - 它们实际上是一个Hashtable结构,提供O(1)直接查找。因此,您对有序集合使用了错误的数据结构。使用List<KeyValuePair<int, string>>可能会更好,因为List会尊重添加/插入项目的顺序。

答案 1 :(得分:0)

我建议手动将“选择一个”项添加到控件本身。如果需要选择框,这将更容易识别是否已进行实际选择。

但是,如果您将某个项目添加到某种类型的词典中,则可以使用与当前使用的ToDictionary方法相同的签名创建自己的扩展方法,但返回{{1} }。