У меня есть словарь, такой как:
var fields = new Dictionary<string, string>
{
{"2", "34"},
{"4", "45"}
};
И я хочу знать, есть ли более простой способ, чем создание цикла as string builder, чтобы по существу создать это в конце: "значение ключа, значение ключа, значение ключа"..
Таким образом, для этого словаря я хотел бы сгладить его так, как это происходит, когда он разделяет запятую между каждым набором, и каждый набор имеет пробел между ключом и значением: "2 34, 4 45"
Выберите форматированные строки, содержащие ключ и значение каждого KeyValuePair, затем присоедините их к запятой:
var result = String.Join(", ", fields.Select(kvp =>
String.Format("{0} {1}", kvp.Key, kvp.Value)));
Альтернативное решение - совокупность значений KeyValuePair с одним StringBuilder:
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.
Это довольно легко с помощью Linq:
string.Join(", ", fields.Select(kvp => kvp.Key + " " + kvp.Value));