将列表转换为IEnumerable< SelectListItem> [英] Convert List to IEnumerable<SelectListItem>

查看:173
本文介绍了将列表转换为IEnumerable< SelectListItem>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

棘手的问题在这里.我正在尝试将列表中的项目转换为IEnumerable<SelectListItem>.

Tricky problem here. I'm trying to convert items for a list to IEnumerable<SelectListItem>.

dynamicTextInDatabase仅返回数据库中使用的所有枚举.当前仅返回1和2.数据类simple拥有一个int值.

dynamicTextInDatabase simply returns all the Enums that are used in my database. Currently only returns 1 and 2. The data class simple holds an int value.

dynamicTextEnumsInDatabase与上面的列表相同,只是在实际存储我的枚举的类中.

dynamicTextEnumsInDatabase is the same list as above just in the class that actually stores my Enums.

dynamicTextEnumsAll是我的应用程序中可用的所有枚举的列表.当前:1、2和3.

dynamicTextEnumsAll is a list of all the Enums that are available in my application. Currently: 1, 2 and 3.

dynamicTextEnumsAvaiable是所有未使用的Enum的列表.它结合了所有枚举,然后删除数据库列表中的那些枚举.

dynamicTextEnumsAvaiable is a list of all the unused Enums. It combines All the Enums and then removes the ones that are in the database list.

我需要通过ViewBag将dynamicTextEnumsAvaiable传递给我的View,以显示在下拉列表中.但是,它必须是IEnumerable<SelectListItem>而不是List.

I need to pass the dynamicTextEnumsAvaiable to my View via the ViewBag to display in a drop-down list. However, It must be IEnumerable<SelectListItem> rather than a List.

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

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

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

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

        var 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();

推荐答案

也许试试看? (未测试)

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

这篇关于将列表转换为IEnumerable&lt; SelectListItem&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆