Ответ 1
Это самый краткий способ, о котором я могу думать:
var result = string.Join(", ", map.Select(m => m.Key + ":" + m.Value).ToArray());
Однако, в зависимости от ваших обстоятельств, это может быть быстрее (хотя и не очень элегантно):
var result = map.Aggregate(new StringBuilder(),
(a, b) => a.Append(", ").Append(b.Key).Append(":").Append(b.Value),
(a) => a.Remove(0, 2).ToString());
Я запускал каждый из них с различным количеством итераций (10 000, 1 000 000, 10 000 000) в вашем трехпозиционном словаре и на моем ноутбуке, последний был в среднем на 39% быстрее. В словаре с 10 элементами последний был только на 22% быстрее.
Еще одно замечание: простая конкатенация строк в моем первом примере была примерно на 38% быстрее, чем string.Format()
вариант mccow002 answer, так как я подозреваю, что он бросает в небольшом построителе строк вместо конкатенации, учитывая почти идентичные показатели производительности.
Чтобы воссоздать исходный словарь из строки результата, вы можете сделать что-то вроде этого:
var map = result.Split(',')
.Select(p => p.Trim().Split(':'))
.ToDictionary(p => p[0], p => p[1]);