C# 选择List with Dictionary,在字典后面添加值';s已分配给SelectList

C# 选择List with Dictionary,在字典后面添加值';s已分配给SelectList,c#,asp.net-mvc,C#,Asp.net Mvc,我在下面的代码中有一个- Dictionary<string, string> myDict = new Dictionary<string, string>(); myDict.Add("keyA", "valueA"); myDict.Add("keyB", "valueB"); IEnumerable<SelectListItem> mySelectList = new SelectList(myDict, "key", "value") 试试这样

我在下面的代码中有一个-

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

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

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

试试这样可怕的东西:

((Dictionary<string, string>)mySelectList.Items).Add("keyC", "valueC");
((字典)mySelectList.Items)。添加(“keyC”、“valueC”);
不过,如果您只是在自己的代码中保留对myDict的引用,而不是滥用它们的属性,那就更好了


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

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

例如:

        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.
Dictionary myDict=newdictionary();
myDict.添加(“keyA”、“valueA”);
myDict.添加(“键B”、“值B”);
IEnumerable mySelectList=新选择列表(myDict,“key”,“value”);
myDict.添加(“关键”、“价值”);
var result=mySelectList.ToList();
//结果现在是一个包含三个项目的列表——keyA、keyB和keyC。
myDict.添加(“键控”、“估值”);
var result2=mySelectList.ToList();
//result2是一个包含四项的列表。结果是
//不变,只包含原来的三个。

是的,您可以像以前一样向词典中添加值。但您是否也要将它们添加到mySelectList中?
        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.