将字典<string,string>转换为分号在c#中的string

简单的开始一天,给一个Dictionary<string, string> ,如下所示:

 var myDict = new Dictionary<string, string>(); myDict["A"] = "1"; myDict["B"] = "2"; myDict["C"] = "3"; myDict["D"] = "4"; 

我希望创build一个string: "A=1;B=2;C=3;D=4"

一个示例实现:

 var myStringBuilder = new StringBuilder(); bool first = true; foreach (KeyValuePair<string, string> pair in myDict) { if (first) { first = false; } else { myStringBuilder.Append(";"); } myStringBuilder.AppendFormat("{0}={1}", pair.Key, pair.Value); } var myDesiredOutput = myStringBuilder.ToString(); 

请注意,字典可能有less于10个项目,这表明一个StringBuilder是矫枉过正。

什么替代实现更简洁/高效? 框架是否有帮助的function?

 string s = string.Join(";", myDict.Select(x => x.Key + "=" + x.Value).ToArray()); 

(如果您使用的是.NET 4或更新的版本,则可以省略最后的ToArray调用。)

另一种select是使用聚合扩展而不是join:

 String s = myDict.Select(x => x.Key + "=" + x.Value).Aggregate((s1, s2) => s1 + ";" + s2);