Есть ли в C# возможность получить массив свойства без перебора листа?

Есть у меня вот такой Листик типа headInfo.

    public enum typeHead { date, str, integer }

    public struct headInfo
    {
        public string name;
        public typeHead type;
    }

    public static List<headInfo> headsSQL = new List<headInfo>()
    {
        { new headInfo { name = "date_import", type = typeHead.date } },
        { new headInfo { name = "num_rz", type = typeHead.integer } },
        { new headInfo { name = "date_rz", type = typeHead.date } },
        { new headInfo { name = "str", type = typeHead.str } }
    };

Можно ли из него получить массив name-ов не перебирая этот Листик циклом?


Ответы (1 шт):

Автор решения: return
readonly Dictionary<string, HeadInfo> heads;

public static ICollection<string> Names => heads.Keys;

public static void AddInfo(HeadInfo info)
{
    // checking...

    heads.Add(info.Name, info);
}

Dictionary<TKey, TValue>.KeyCollection - виртуальная, т. е. ссылается на др. коллекцию (в нашем случае на словарь) (ссылка), и ссылка на её находится внутри словаря, зн. можно просто использовать функцию для её возврата, обёрнутую в св-во.

→ Ссылка