0

我正在使用字典来填充视图中的选择框。所有这些都正常工作。但是,我需要在字典的开头添加一个附加选项,该选项将作为对用户的提示,其值为 -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... 行替换。

想法?

4

2 回答 2

3

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

于 2013-07-10T17:22:29.023 回答
0

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

但是,如果您打算将项目添加到某种字典中,您可以创建自己的扩展方法,其签名与ToDictionary您当前使用的方法相同,但返回一个SortedDictionary.

于 2013-07-10T17:44:31.047 回答