2010-05-12 15 views
10

Supongamos que tengo un Dictionary<String,String>, y quiero producir una representación de cadena de él. La forma en "herramientas de piedra" de hacerlo sería:.NET: forma eficiente de producir una cadena a partir de un diccionario <K,V>?

private static string DictionaryToString(Dictionary<String,String> hash) 
{ 
    var list = new List<String>(); 
    foreach (var kvp in hash) 
    { 
     list.Add(kvp.Key + ":" + kvp.Value); 
    } 
    var result = String.Join(", ", list.ToArray()); 
    return result; 
} 

¿Hay una manera eficaz de hacer esto en C# utilizando métodos de extensión existentes?

Conozco los métodos ConvertAll() y ForEach() en List, que se pueden utilizar para eliminar los bucles foreach. ¿Hay algún método similar que pueda usar en Dictionary para repetir los elementos y lograr lo que quiero?

+1

Se debe ajustar la capacidad de 'list'. – SLaks

Respuesta

17

En .Net 4.0:

String.Join(", ", hash.Select(kvp => kvp.Key + ":" + kvp.Value)); 

En .Net 3.5, tendrá que añadir .ToArray().

+0

Batir por un segundo T_T --- buena solución, bastante rápido y muy fácil de leer. – mafu

5

Aquí van:


    public static class DictionaryExtensions 
    { 
     public static string DictionaryToString(this Dictionary<String, String> hash) 
     { 
      return String.Join(", ", hash.Select(kvp => kvp.Key + ":" + kvp.Value)); 
     } 
    } 
Cuestiones relacionadas