C# 如何输出词典<;字符串、字典<;字符串,字符串>>;?

C# 如何输出词典<;字符串、字典<;字符串,字符串>>;?,c#,dictionary,lookup,containskey,trygetvalue,C#,Dictionary,Lookup,Containskey,Trygetvalue,我现在真的被我的字典输出卡住了: 我有这个代码来“填充”字典(基本上有两个): 但是,是的,你是对的,它不工作,控制台中的输出是: 我甚至没有得到任何我的Console.WriteLine(“Couln't check selected Name”),这意味着它将运行IF语句,但Console.WriteLine函数不起作用 现在我的问题是,如何在字典中查找字符串SelectedItemName?您需要类似的内容: foreach (var keyValue in newDictionary[_

我现在真的被我的字典输出卡住了:

我有这个代码来“填充”字典(基本上有两个):

但是,是的,你是对的,它不工作,控制台中的输出是:

我甚至没有得到任何我的
Console.WriteLine(“Couln't check selected Name”)
,这意味着它将运行IF语句,但Console.WriteLine函数不起作用


现在我的问题是,如何在
字典中查找字符串SelectedItemName?

您需要类似的内容:

foreach (var keyValue in newDictionary[_form1Object.SelectedItemName])
{
   Console.WriteLine("Key: {0}, Value: {1}", keyValue.Key, keyValue.Value);
}

您需要类似于:

foreach (var keyValue in newDictionary[_form1Object.SelectedItemName])
{
   Console.WriteLine("Key: {0}, Value: {1}", keyValue.Key, keyValue.Value);
}

它正在按它应该的方式工作。看,你正在获取这个表达式

newDictionary[_form1Object.SelectedItemName]
其中,
newDictionary
有一个字符串键和另一个dictionary作为值。因此,此表达式将返回父词典的
字段,它实际上是一个
词典

这意味着您还必须像这样迭代您的子字典

 if (newDictionary.ContainsKey(_form1Object.SelectedItemName))
 {
     Console.WriteLine("Parent Key : {0}",_form1Object.SelectedItemName)
     foreach(var childDict in newDictionary[_form1Object.SelectedItemName])
     {
        Console.WriteLine("Key: {0}, Value: {1}", childDict.Key,childDict.Value);
     }
 }

它正在按它应该的方式工作。看,你正在获取这个表达式

newDictionary[_form1Object.SelectedItemName]
其中,
newDictionary
有一个字符串键和另一个dictionary作为值。因此,此表达式将返回父词典的
字段,它实际上是一个
词典

这意味着您还必须像这样迭代您的子字典

 if (newDictionary.ContainsKey(_form1Object.SelectedItemName))
 {
     Console.WriteLine("Parent Key : {0}",_form1Object.SelectedItemName)
     foreach(var childDict in newDictionary[_form1Object.SelectedItemName])
     {
        Console.WriteLine("Key: {0}, Value: {1}", childDict.Key,childDict.Value);
     }
 }

您必须实现自己的输出逻辑
Dictionary
不重写
Object.ToString
,因此输出只是类名。比如:

public static class DictionaryExtensions
{ 
  public static string WriteContent(this Dictionary<string, string> source)
  {
    var sb = new StringBuilder();
    foreach (var kvp in source) {
      sb.AddLine("Key: {0} Value: {1}", kvp.Key, kvp.Value);
    }
    return sb.ToString();
  }
}
公共静态类字典扩展
{ 
公共静态字符串WriteContent(此字典源)
{
var sb=新的StringBuilder();
foreach(源中的var kvp){
sb.AddLine(“Key:{0}值:{1}”,kvp.Key,kvp.Value);
}
使某人返回字符串();
}
}

将允许您在引用该命名空间时仅调用
newDictionary[\u form1object.SelectedItemName]
上的
.WriteContent()

您必须实现自己的输出逻辑
Dictionary
不重写
Object.ToString
,因此输出只是类名。比如:

public static class DictionaryExtensions
{ 
  public static string WriteContent(this Dictionary<string, string> source)
  {
    var sb = new StringBuilder();
    foreach (var kvp in source) {
      sb.AddLine("Key: {0} Value: {1}", kvp.Key, kvp.Value);
    }
    return sb.ToString();
  }
}
公共静态类字典扩展
{ 
公共静态字符串WriteContent(此字典源)
{
var sb=新的StringBuilder();
foreach(源中的var kvp){
sb.AddLine(“Key:{0}值:{1}”,kvp.Key,kvp.Value);
}
使某人返回字符串();
}
}

将允许您在引用该命名空间时仅调用
newDictionary[\u form1object.SelectedItemName]
上的
.WriteContent()

请正确格式化您的代码。它正在工作;外部字典中键的值是另一个字典对象,字典上的
ToString()
使用
系统中的默认行为。对象
:在(\u form1Object.comboBox2.SelectedIndex>-1)时打印出对象类型的名称
??“while”检查用户是否在组合框中选择了某些内容,如果选择了,它将遍历while循环的内容,还是我错了?我想newDictionary[\u form1Object.SelectEditeName]会返回您以前填写的keyDictionary。您必须添加实际关键字newDictionary[\u form1Object.SelectedItemName][index]的第二个索引。请正确设置代码格式。它正在工作;外部字典中键的值是另一个字典对象,字典上的
ToString()
使用
系统中的默认行为。对象
:在(\u form1Object.comboBox2.SelectedIndex>-1)时打印出对象类型的名称??“while”检查用户是否在组合框中选择了某些内容,如果选择了,它将遍历while循环的内容,还是我错了?我想newDictionary[\u form1Object.SelectEditeName]会返回您以前填写的keyDictionary。您必须添加实际关键字newDictionary[\u form1Object.SelectedItemName][index]的第二个索引