How to add item to IEnumerable SelectListItem
asp.net-mvc-5, c#
Solution
The problem is that your variable is of type `IEnumerable<SelectListItem>`. Either change it to `List<SelectListItem>` or use another 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;
}
Problem
I am trying to add an item to an IEnumerable SelectList. I have an initial query that populates my list, I then have a query to check to see if an item called "INFORMATIONAL" exists. If not, I need to add it to the list returned from my initial query. Here is my code. It does not like list.Add(newItem). Any assistance would be appreciated. Thanks ``` 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; } ```