我有一个列表列表<字典<字符串,整数>>我必须转换为字符串,然后转换回相同的格式列表<字典<字符串,整数>取代。我尝试使用
string ratio = string.Join("$", order);
它转换为字符串但我无法使用字符串值从字典值中检索字典,但是它提供了一个错误,它无法从字符串[]转换为字典。
List<String> convertStringToList = new List<Dictionary<String,String>(ratios.Split('$'));
答案 0 :(得分:0)
这是我能想到的最简洁的方式:
更新了开始
List<Dictionary<string, string>> convertStringToList= new List<Dictionary<string, string>>()
List<string> strList = new List<string>();
Foreach(var dic in convertStringToList)
{
string result = string.Join(", ", dic.Select(m => m.Key + ":" + m.Value).ToArray());
strList.add(result);
}
更新结束
但是,根据您的情况,这可能会更快(虽然不是很优雅):
Foreach(var dic in convertStringToList)
{
string result = dic.Aggregate(new StringBuilder(),
(a, b) => a.Append(", ").Append(b.Key).Append(":").Append(b.Value),
(a) => a.Remove(0, 2).ToString());
strList.add(result);
}
<强> Reference: 强>
希望它有所帮助。
答案 1 :(得分:0)
您可以尝试使用以下代码段。
string ratio = string.Join("$", data);
var convertStringToList = ratio.Split(new[] {'$'}, StringSplitOptions.RemoveEmptyEntries)
.Select(part => part.Split(','))
.ToDictionary(split => split[0].Trim('['), split => split[1].Trim(']'));
答案 2 :(得分:0)
我会推荐@Zaheer的回答,但是如果你不能改变代码,你可以使用代码:
var list = new List<KeyValuePair<string, string>>(string.Join("$", dict).Split('$')
.Select(x =>
new KeyValuePair<String, String>(
x.Substring(1, x.IndexOf(',')),
x.Substring(x.IndexOf(',')+1, x.Length-x.IndexOf(',')-2))));
string.Join('$', order)
的格式为[key, value]$[key, value].....