.NET: эффективный способ создания строки из словаря <K, V>? - PullRequest
10 голосов
/ 12 мая 2010

Предположим, у меня есть Dictionary<String,String>, и я хочу получить его строковое представление. "Каменные орудия" способ сделать это будет:

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;
}

Есть ли эффективный способ сделать это в C # с использованием существующих методов расширения?

Мне известны методы ConvertAll () и ForEach () в List, которые можно использовать для устранения циклов foreach. Есть ли аналогичный метод, который я могу использовать в словаре, чтобы перебрать элементы и выполнить то, что я хочу?

Ответы [ 2 ]

17 голосов
/ 12 мая 2010

В .Net 4.0:

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

В .Net 3.5 вам нужно добавить .ToArray().

5 голосов
/ 12 мая 2010

Вот, пожалуйста:


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