将字典列表转换为字符串,反之亦然

时间:2017-04-18 10:53:07

标签: c# xamarin

我有一个列表列表<字典<字符串,整数>>我必须转换为字符串,然后转换回相同的格式列表<字典<字符串,整数>取代。我尝试使用

string ratio = string.Join("$", order);

它转换为字符串但我无法使用字符串值从字典值中检索字典,但是它提供了一个错误,它无法从字符串[]转换为字典。

List<String> convertStringToList = new List<Dictionary<String,String>(ratios.Split('$'));

3 个答案:

答案 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].....