private IEnumerable <IconDescription> ToIconDescription(ThemifyIconsIcon icon, string filter) { var memberInfo = typeof(ThemifyIconsIcon).GetMember(icon.ToString()).FirstOrDefault(); if (memberInfo == null) { yield break; } foreach (var cat in memberInfo.GetCustomAttributes(typeof(IconCategoryAttribute), false).Cast <IconCategoryAttribute>()) { var desc = memberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).Cast <DescriptionAttribute>().First(); var id = memberInfo.GetCustomAttributes(typeof(IconIdAttribute), false).Cast <IconIdAttribute>().FirstOrDefault(); if (!string.IsNullOrEmpty(filter) && !( desc.Description.IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) > -1 || icon.ToString().IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) > -1) ) { continue; } yield return(new IconDescription { Category = cat.Category, Description = desc.Description, Icon = icon, Id = id?.Id }); } }