将字典扁平化为逗号分隔的键/值对集合列表

时间:2014-06-11 07:05:33

标签: c#

我有一本字典,如:

 var fields = new Dictionary<string, string>
        {
            {"2", "34"},
            {"4", "45"}
        };

我想知道是否有一种比创建循环和字符串构建器更简单的方法来实质上创建它:“键值,键值,键值”..

所以对于这个词典,我想把它变成一个像这样的字符串,它在每个集合之间用逗号分隔,每个集合在键和值之间有一个空格:"2 34, 4 45"

2 个答案:

答案 0 :(得分:3)

选择包含每个KeyValuePair的键和值的格式化字符串,然后用逗号连接它们:

var result = String.Join(", ", fields.Select(kvp => 
                                  String.Format("{0} {1}", kvp.Key, kvp.Value)));

替代解决方案 - 使用单个StringBuilder聚合KeyValuePair值:

var builder = fields.Aggregate(new StringBuilder(),
                  (sb, kvp) => sb.AppendFormat("{0} {1}, ", kvp.Key, kvp.Value));

if (builder.Length > 0)
    builder.Remove(builder.Length - 2, 2);

var result = builder.ToString();

因此,您将避免为每个KeyValuePair创建其他字符串。

答案 1 :(得分:2)

使用Linq非常容易:

string.Join(", ", fields.Select(kvp => kvp.Key + " " + kvp.Value));