Свести словарь в список с разделителями-запятыми из набора пар «ключ / значение»

1

У меня есть словарь, такой как:

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

И я хочу знать, есть ли более простой способ, чем создание цикла as string builder, чтобы по существу создать это в конце: "значение ключа, значение ключа, значение ключа"..

Таким образом, для этого словаря я хотел бы сгладить его так, как это происходит, когда он разделяет запятую между каждым набором, и каждый набор имеет пробел между ключом и значением: "2 34, 4 45"

Теги:

2 ответа

3

Выберите форматированные строки, содержащие ключ и значение каждого 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.

0

Это довольно легко с помощью Linq:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню