Подтвердить что ты не робот

Преобразовать список в IEnumerable <SelectListItem>

Трудная проблема здесь. Я пытаюсь преобразовать элементы для списка в IEnumerable<SelectListItem>.

Списки

dynamicTextInDatabase просто возвращает все перечисления, которые используются в моей базе данных. В настоящее время только возвращает 1 и 2. Класс данных simple имеет значение int.

dynamicTextEnumsInDatabase - тот же список, что и выше, только в классе, который фактически хранит мои Enums.

dynamicTextEnumsAll - список всех перечислений, доступных в моем приложении. В настоящее время: 1, 2 и 3.

dynamicTextEnumsAvaiable - список всех неиспользуемых Enums. Он объединяет все перечисления, а затем удаляет те, которые находятся в списке базы данных.

Мне нужно передать dynamicTextEnumsAvaiable в мой вид через ViewBag для отображения в раскрывающемся списке. Однако он должен быть IEnumerable<SelectListItem>, а не List.

код

        List<DynamicTextEnumData> dynamicTextInDatabase = new List<DynamicTextEnumData>();
        List<DynamicTextEnum> dynamicTextEnumsInDatabase = new List<DynamicTextEnum>();
        List<DynamicTextEnum> dynamicTextEnumsAll = new List<DynamicTextEnum>();
        IEnumerable<SelectListItem> list;

        using (var proxy = new Proxy<IDynamicText>())
        {
            dynamicTextInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser());
        }

        foreach (DynamicTextEnumData item in dynamicTextInDatabase)
        {
            DynamicTextEnum dynamicTextEnum = (DynamicTextEnum)item.DynamicTextEnum;
            dynamicTextEnumsInDatabase.Add(dynamicTextEnum);
        }

        foreach (DynamicTextEnum item in Enum.GetValues(typeof(DynamicTextEnum)))
        {
            dynamicTextEnumsAll.Add(item);
        }

        List<DynamicTextEnum> dynamicTextEnumsAvaiable = dynamicTextEnumsAll.Except(dynamicTextEnumsInDatabase).ToList();

        if (dynamicTextEnumsAvaiable.Count == 0)
        {
            TempData["Error"] = "To update the text of a message or warning, please select it from the grid below.";
            return RedirectToAction("Index");
        }

        ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable;
        return View();
4b9b3361

Ответ 1

Может быть, попробуй? (Непроверенные)

ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable.Select(x => 
                                  new SelectListItem() 
                                  {
                                      Text = x.ToString()
                                  });

Ответ 3

Возможно, вы можете использовать оператор Linq для его преобразования

IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable
                                           .Select(i => new SelectListItem()
                                                        {
                                                            Text = i.ToString(), 
                                                            Value = i
                                                        });

Ответ 5

Вы пробовали

IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable.AsEnumerable()