简单的开始一天,给出Dictionary<string, string>
如下:
var myDict = new Dictionary<string, string>();
myDict["A"] = "1";
myDict["B"] = "2";
myDict["C"] = "3";
myDict["D"] = "4";
我希望创建一个字符串:"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();
请注意,字典可能少于10个项目,这表明StringBuilder过度。
哪些替代实施更简洁/高效?框架是否有任何有用的功能?
答案 0 :(得分:247)
string s = string.Join(";", myDict.Select(x => x.Key + "=" + x.Value).ToArray());
(如果你使用的是.NET 4或更新版本,那么你可以省略最后的ToArray
电话。)
答案 1 :(得分:36)
另一个选择是使用Aggregate扩展而不是Join:
String s = myDict.Select(x => x.Key + "=" + x.Value).Aggregate((s1, s2) => s1 + ";" + s2);
答案 2 :(得分:0)
var joinedString= string.Join(";", myDict.Select(x => x.Key + "=" + x.Value));
答案 3 :(得分:0)
string.format
的替代方法是对字典中的每个值使用string.Join
:
string myDesiredOutput = string.Join(";", myDict.Select(x => string.Join("=", x.Key, x.Value)));
打印:
A=1;B=2;C=3;D=4