Есть ли в 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 - виртуальная, т. е. ссылается на др. коллекцию (в нашем случае на словарь) (ссылка), и ссылка на её находится внутри словаря, зн. можно просто использовать функцию для её возврата, обёрнутую в св-во.