我有以下代码-
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");
如果您想向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<string, string>)mySelectList.Items).Add("keyC", "valueC");
不过,如果你只是在自己的代码中保留对myDict的引用,而不是滥用它们的属性,那会更好。
注意:这很可能不起作用。我还没试过。