C# 将字典的字典转换为字符串
我有一本字典:C# 将字典的字典转换为字符串,c#,tostring,C#,Tostring,我有一本字典: Dictionary<string, Dictionary<char, string>> myDict; 字典myDict; 我试图通过重写to string方法来输出它的内容,但我不知道如何将其转换为string 我试过: StringBuilder str = new StringBuilder(); foreach (Dictionary<string, Dictionary<char, string>> s in str
Dictionary<string, Dictionary<char, string>> myDict;
字典myDict;
我试图通过重写to string方法来输出它的内容,但我不知道如何将其转换为string
我试过:
StringBuilder str = new StringBuilder();
foreach (Dictionary<string, Dictionary<char, string>> s in str)
{
myDict.Append(s.Keys).Append(",").Append(s.Values);
}
StringBuilder str=new StringBuilder();
foreach(str中的字典s)
{
myDict.Append(s.Keys).Append(“,”).Append(s.Values);
}
这不起作用试试这个:
StringBuilder str = new StringBuilder();
foreach (var s in myDict)
{
foreach (var i in s.Value)
{
//Key is char, Value is string
str.Append("(")
.Append(s.Key)
.Append(",")
.Append(i.Key)
.Append(",")
.Append(i.Value)
.Append("),");
}
}
//remove trailing ","
var s = str.ToString().Trim(",");
试试这个:
StringBuilder str = new StringBuilder();
foreach (var s in myDict)
{
foreach (var i in s.Value)
{
//Key is char, Value is string
str.Append("(")
.Append(s.Key)
.Append(",")
.Append(i.Key)
.Append(",")
.Append(i.Value)
.Append("),");
}
}
//remove trailing ","
var s = str.ToString().Trim(",");
您的版本尝试打印
s.Keys
和s.Values
,这两个都是集合。可以使用循环打印,但可以使用两次:
public override string ToString() {
return string.Join(
",",
myDict.Select(
p => string.Format(
"{0}:{1}",
p.Key,
string.Join(",", p.Value.Select(x => string.Format("{0}={1}", x.Key, x.Value)))
)
);
}
注意1:上述语法在两个调用中都使用而不是。例如,如果您使用的是较新版本的C#,您可以将其重写为较短的代码
string.Join(",", p.Value.Select(x => $"{x.Key}={x.Value}"))
注意2:对于较旧版本的.NET,请在两次选择后添加ToArray()
:
return string.Join(
",",
myDict.Select(
p => string.Format(
"{0}:{1}",
p.Key,
string.Join(",", p.Value.Select(x => string.Format("{0}={1}", x.Key, x.Value)).ToArray())
).ToArray()
));
您的版本尝试打印
s.Keys
和s.Values
,这两个都是集合。可以使用循环打印,但可以使用两次:
public override string ToString() {
return string.Join(
",",
myDict.Select(
p => string.Format(
"{0}:{1}",
p.Key,
string.Join(",", p.Value.Select(x => string.Format("{0}={1}", x.Key, x.Value)))
)
);
}
注意1:上述语法在两个调用中都使用而不是。例如,如果您使用的是较新版本的C#,您可以将其重写为较短的代码
string.Join(",", p.Value.Select(x => $"{x.Key}={x.Value}"))
注意2:对于较旧版本的.NET,请在两次选择后添加ToArray()
:
return string.Join(
",",
myDict.Select(
p => string.Format(
"{0}:{1}",
p.Key,
string.Join(",", p.Value.Select(x => string.Format("{0}={1}", x.Key, x.Value)).ToArray())
).ToArray()
));
考虑使用,它支持将字典序列化为字符串
var values = new Dictionary<string, IDictionary<char, string>>
{
{
"test", new Dictionary<char, string>
{
['a'] = "apple",
['b'] = "banana",
['c'] = "cat"
}
},
{
"lights", new Dictionary<char, string>
{
['c'] = "compact fluorescent",
['l'] = "light emitting diode",
['i'] = "incandescent"
}
}
};
Console.WriteLine(JsonConvert.SerializeObject(values));
var值=新字典
{
{
“测试”,新字典
{
['a']=“苹果”,
['b']=“香蕉”,
['c']=“猫”
}
},
{
《灯光》,新词典
{
['c']=“紧凑型荧光灯”,
['l']=“发光二极管”,
['i']=“白炽灯”
}
}
};
WriteLine(JsonConvert.SerializeObject(值));
输出:
{“测试”:{“a”:“苹果”,“b”:“香蕉”,“c”:“猫”},“灯”:{“c”:“紧凑型荧光灯”,“l”:“发光二极管”,“i”:“白炽灯”}
考虑使用,它支持将字典序列化为字符串
var values = new Dictionary<string, IDictionary<char, string>>
{
{
"test", new Dictionary<char, string>
{
['a'] = "apple",
['b'] = "banana",
['c'] = "cat"
}
},
{
"lights", new Dictionary<char, string>
{
['c'] = "compact fluorescent",
['l'] = "light emitting diode",
['i'] = "incandescent"
}
}
};
Console.WriteLine(JsonConvert.SerializeObject(values));
var值=新字典
{
{
“测试”,新字典
{
['a']=“苹果”,
['b']=“香蕉”,
['c']=“猫”
}
},
{
《灯光》,新词典
{
['c']=“紧凑型荧光灯”,
['l']=“发光二极管”,
['i']=“白炽灯”
}
}
};
WriteLine(JsonConvert.SerializeObject(值));
输出:
{“测试”:{“a”:“苹果”,“b”:“香蕉”,“c”:“猫”},“灯”:{“c”:“紧凑型荧光灯”,“l”:“发光二极管”,“i”:“白炽灯”}
@TSB_1020是否在C#文件顶部导入了
System.Linq
?是的。错误消息显示:无法从“System.Collections.Generic.IEnumerable”转换为“string[]”@TSB_1020是否在.NET 3.5上?在两次选择后添加ToArray()
调用。@TSB\u 1020请查看编辑@TSB_1020是否在C#文件顶部导入了System.Linq
?是的。错误消息显示:无法从“System.Collections.Generic.IEnumerable”转换为“string[]”@TSB_1020是否在.NET 3.5上?在两次选择后添加ToArray()
调用。@TSB\u 1020请查看编辑。这个给了我一个关于内部foreach loopOops中的“s”的错误。。。从我的头顶做这件事。。。等一下,这是有效的,但没有在字典中显示字符。在这种情况下,您也可以附加i.Key
,我想确定您希望输出的内容。我希望它类似于(string,char,string),(string,char,string),…这一个在内部foreach循环中的“s”上给了我一个错误。。。从我的头顶做这件事。。。等一下,这是有效的,但没有在字典中显示字符。在这种情况下,您也可以附加i.Key
,我想确定您希望输出的内容。我希望它类似(string,char,string),(string,char,string),…考虑到stringTransition未定义我怀疑它不起作用考虑到stringTransition未定义我怀疑它不起作用www。输出很好。Owww。输出很好。