1

我有以下代码 -

Dictionary<string, string> myDict = new Dictionary<string, string>();

myDict.Add("keyA", "valueA");
myDict.Add("keyB", "valueB");

IEnumerable<SelectListItem> mySelectList = new SelectList(myDict, "key", "value")

在程序的更下方,我想将值添加到myDict. 那可能吗?如果是,那么如何?我想做类似的事情 -

mySelectList.myDict.Add("keyC", "valueC");
4

2 回答 2

2

如果您想将项目添加到 myDict,这当然是可能的,并且任何更改都将反映在任何mySelectList' 枚举中,只要在.ToList()生成枚举(例如 using )之前进行更改。

作为一个工作示例:

        Dictionary<string, string> myDict = new Dictionary<string, string>();

        myDict.Add("keyA", "valueA");
        myDict.Add("keyB", "valueB");

        IEnumerable<SelectListItem> mySelectList = new SelectList(myDict, "key", "value");

        myDict.Add("keyC", "valueC");

        var result = mySelectList.ToList();

      // result is now a list containing three items - keyA, keyB and keyC.

        myDict.Add("keyD", "valueD");

        var result2 = mySelectList.ToList();

      // result2 is a list containing four items. result is
      // unchanged, containing just the original three.
于 2013-07-10T21:31:35.237 回答
0

尝试像这样可怕的事情:

((Dictionary<string, string>)mySelectList.Items).Add("keyC", "valueC");

不过,如果您只是在自己的代码中保留对 myDict 的引用,而不是滥用它们的属性,那会更好。

注意:这很可能不起作用。我没试过。

于 2013-07-10T21:17:39.987 回答