转换词典的词典串
我有词典的词典:转换词典的词典串
Dictionary<string, Dictionary<char, string>> myDict;
我被重写串方法试图输出它的内容,但我不能弄清楚如何将其转换为字符串。
我想:
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 (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
,这两者都是集合。您可以使用一个循环打印出来,但你可以使用string.Join
两次来代替:
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:上述语法使用string.Format
,而不是string interpolation,在这两个电话。如果您使用的是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()
));
它给我一个错误的p.Value.Select(...) –
@ TSB_1020你是否在C#文件的顶部导入了'System.Linq'? – dasblinkenlight
是的,我做到了。错误消息说:不能从'System.Collections.Generic.IEnumerable
考虑使用Newtonsoft.Json
,它支持将字典序列化为字符串。
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));
输出:
{ “测试”:{ “一个”: “苹果”, “B”: “香蕉”, “C”: “猫”}, “灯”: {“C”:“紧凑型荧光灯”,“L”:“发光二极管”,“I”:“白炽灯”}}
Owww ... .nice输出。 – Stefan
考虑stringTransition没有定义我怀疑它不工作 – Paparazzi