.NET: эффективный способ произвести строку из Словаря <K, V>?

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

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

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

Я знаю о ConvertAll () и ForEach () методы в Списке, который может использоваться для устранения циклов foreach. Существует ли похожий метод, который я могу использовать на Словаре, чтобы выполнить итерации через объекты и выполнить то, что я хочу?

10
задан Cheeso 12 May 2010 в 14:08
поделиться

2 ответа

В .Net 4.0:

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

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

17
ответ дан 3 December 2019 в 17:57
поделиться

Вот так:


    public static class DictionaryExtensions
    {
        public static string DictionaryToString(this Dictionary<String, String> hash)
        {
            return String.Join(", ", hash.Select(kvp => kvp.Key + ":" + kvp.Value));
        }
    }
5
ответ дан 3 December 2019 в 17:57
поделиться