Cómo agregar elemento de IEnumerable SelectListItem

Estoy tratando de agregar un elemento a un IEnumerable SelectList. Tengo una consulta inicial que llena mi lista, tengo una consulta para comprobar si un elemento llamado «INFORMATIVOS» que existe. Si no, tengo que añadir a la lista de regresar de mi consulta inicial. Aquí está mi código. Que no le gusta la lista.Agregar(newItem). Cualquier ayuda sería apreciada. Gracias

public IEnumerable<SelectListItem> GetCategoriesByAccountID(string AccountID)
    {
        IEnumerable<SelectListItem> list = null;

        using (var context = new AMPEntities())
        {
            //Queries DB for list of categories by AccountID
            var query = (from ca in context.CustomAlerts
                        where ca.AccountID == AccountID
                        orderby ca.AlertCategory
                        select new SelectListItem { Text = ca.AlertCategory, Value = ca.AlertCategory }).Distinct();
            list = query.ToList();

            //Checks list to see if "INFORMATIONAL" already exists
            var item = (from l in list
                        where l.Value == "INFORMATIONAL"
                        select new SelectListItem { Text = l.Text, Value = l.Value }).FirstOrDefault();

            //If "INFORMATIONAL" is not present add it to list
            if (item == null)
            {
                var newItem = new SelectListItem { Text = "INFORMATIONAL", Value = "INFORMATIONAL" };
                list.Add(newItem);
            }
        }

        return list;
    }
  • It does not like list.Add(newItem). ¿Qué quieres decir?
  • intelisense dice IEnumerable SelectListItem no contiene una definición para Agregar
InformationsquelleAutor Shawn Larson | 2014-12-01

3 Kommentare

  1. 12

    El problema es que la variable es de tipo IEnumerable<SelectListItem>. Cambiar a List<SelectListItem> o utilizar otra variable.

    public IEnumerable<SelectListItem> GetCategoriesByAccountID(string AccountID)
        {
            List<SelectListItem> list = null;
    
            using (var context = new AMPEntities())
            {
                //Queries DB for list of categories by AccountID
                var query = (from ca in context.CustomAlerts
                            where ca.AccountID == AccountID
                            orderby ca.AlertCategory
                            select new SelectListItem { Text = ca.AlertCategory, Value = ca.AlertCategory }).Distinct();
                list = query.ToList();
    
                //Checks list to see if "INFORMATIONAL" already exists
                var item = (from l in list
                            where l.Value == "INFORMATIONAL"
                            select new SelectListItem { Text = l.Text, Value = l.Value }).FirstOrDefault();
    
                //If "INFORMATIONAL" is not present add it to list
                if (item == null)
                {
                    var newItem = new SelectListItem { Text = "INFORMATIONAL", Value = "INFORMATIONAL" };
                    list.Add(newItem);
                }
            }
    
            return list;
        }
  2. 0

    Aquí es algo que se me ocurrió que podría ser útil a alguien. Tal vez, incluso de mí en una fecha posterior. Echa un vistazo a la última línea de código.

            CostCenterHeaders CostHeaders = CostCenterHeaders.GetCostCenterHeaders(ClientNumber);
            List<SelectListItem> Level1Header = new List<SelectListItem>();
            if (CostHeaders.Level1Heading !=null)
            {
                Level1Header.Add(new SelectListItem { Text = "All " + CostHeaders.Level1Heading + " Centers", Value = "" });
                List<HierarchyLevel> HierarchyLevels = HierarchyLevel.GetHierarchyByLevel(ClientNumber);
                Level1Header.AddRange(HierarchyLevels.Select(x => new SelectListItem() { Value = x.LevelID, Text = x.LevelDescr }).ToList());
            }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea