我知道当值是List时如何从字典中输出键和值,当我使用a迭代字典时foreach(KeyValuePair
,但如果我必须使用不同类型的循环,如下例,我是不确定如何正确获取值.
我正在迭代列表,但使用字典,因为我按字母顺序排序.我知道还有其他方法可以做到这一点,这不是我的问题.
所以,我试图根据键按字母顺序输出键及其值.
string string1 = "A_list1"; Listlist1 = new List { 1, 2, 3 }; string string2 = "B_list2"; List list2 = new List { 4, 5, 7 }; string string3 = "C_list3"; List list3 = new List { 8, 9, 10 }; Dictionary > myDictionary = new Dictionary >(); myDictionary.Add(string2, list1); myDictionary.Add(string1, list2); myDictionary.Add(string3, list3); var sortedAlphabeticallyMyDictionary = myDictionary.Keys.ToList(); sortedAlphabeticallyMyDictionary.Sort(); foreach (string myString in sortedAlphabeticallyMyDictionary) { MessageBox.Show("Key: " + myString + "\n" + "Value: " + myDictionary[myString] ); }
产量
Key: A_list1 Value: System.Collections.Generic.List`1[System.Int32] Key: B_list2 Value: System.Collections.Generic.List`1[System.Int32] Key: C_list3 Value: System.Collections.Generic.List`1[System.Int32]
输出是有意义的,因为如果你有一个包含List的Dictionary,你必须作为KeyValuePair迭代才能获得实际列表,但我是一个超级C#noob,并不确定如何获得在此实例中正确列出.
任何帮助表示赞赏.
您可以通过List
以下方式将a转换为字符串表示:
var list = new List{ 1, 2, 3 }; MessageBox.Show(string.Join(",", list.Select(x => x.ToString())));
所以你可以使用这段代码:
foreach (string myString in sortedAlphabeticallyMyDictionary) { MessageBox.Show(string.Format("Key: {0} \n Value: {1}" , myString, string.Join(",", myDictionary[myString].Select(x => x.ToString()))) ); }
别忘了添加 using System.Linq;