我正在使用字典填充视图中的“选择”框。所有这一切都正常。但是,我需要在字典的开头添加一个附加选项,该选项将作为用户的提示并且值为-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 ...行替换。
思想?
答案 0 :(得分:3)
字典不是有序的 - 它们实际上是一个Hashtable结构,提供O(1)直接查找。因此,您对有序集合使用了错误的数据结构。使用List<KeyValuePair<int, string>>
可能会更好,因为List会尊重添加/插入项目的顺序。
答案 1 :(得分:0)
我建议手动将“选择一个”项添加到控件本身。如果需要选择框,这将更容易识别是否已进行实际选择。
但是,如果您将某个项目添加到某种类型的词典中,则可以使用与当前使用的ToDictionary
方法相同的签名创建自己的扩展方法,但返回{{1} }。