Ésta es la forma más concisa que puedo pensar:
var result = string.Join(", ", map.Select(m => m.Key + ":" + m.Value).ToArray());
Sin embargo, dependiendo de sus circunstancias , Esto podría ser más rápido (aunque no muy elegante):
var result = map.Aggregate(new StringBuilder(),
(a, b) => a.Append(", ").Append(b.Key).Append(":").Append(b.Value),
(a) => a.Remove(0, 2).ToString());
Ejecuté cada uno de los anteriores con un número variable de iteraciones (10,000; 1,000,000; 10,000,000) en su diccionario de tres elementos y en mi computadora portátil, este último fue en promedio un 39% más rápido. En un diccionario con 10 elementos, este último solo fue aproximadamente un 22% más rápido.
otra cosa a tener en cuenta, simple concatenación de cadenas en mi primer ejemplo fue aproximadamente un 38% más rápido que la variación string.Format()
en mccow002's answer, como sospecho que está lanzando en un pequeño generador de cadenas en lugar de la concatenación, dado el desempeño casi idéntico métrica.
para recrear el diccionario original de la cadena de resultado, se podría hacer algo como esto:
var map = result.Split(',')
.Select(p => p.Trim().Split(':'))
.ToDictionary(p => p[0], p => p[1]);
Didn ' Veo el tuyo antes de publicar el mío. +1 por pensamiento brillante :) – mccow002
@CoryLarson Ah, genial. Comentario: retractado. – dlev
¿cómo puedo volver de estos resultados de var al diccionario original? – zipi