Ответ 1
string s = string.Join(";", myDict.Select(x => x.Key + "=" + x.Value).ToArray());
(И если вы используете .NET 4 или новее, то вы можете опустить окончательный вызов ToArray
.)
Простой, чтобы начать день, учитывая 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 переполнен.
Какие альтернативные реализации более сжатые/эффективные? Есть ли в инфраструктуре какие-либо функции, которые помогут?
string s = string.Join(";", myDict.Select(x => x.Key + "=" + x.Value).ToArray());
(И если вы используете .NET 4 или новее, то вы можете опустить окончательный вызов ToArray
.)
Другой вариант - использовать расширение агрегата, а не Join:
String s = myDict.Select(x => x.Key + "=" + x.Value).Aggregate((s1, s2) => s1 + ";" + s2);
Альтернативой 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
var joinedString= string.Join(";", myDict.Select(x => x.Key + "=" + x.Value));