Следующий код работает хорошо
IEnumerable<GroupedSelectListItem> groupList = db.Categories.Select(p => new GroupedSelectListItem()
{
GroupKey = p.ParentCategory.Name,
GroupName = p.ParentCategory.Name,
Text = p.Name,
Value = p.Name
});
Хотя приведенный ниже код генерирует ссылка на объект, не установленная для ошибки экземпляра
List<Category> orderedList = new List<Category>();
var rootList = db.Categories.Where(c => c.ParentCategoryId == null).ToList();
foreach (var item in rootList)
{
orderedList.Add(item);
if (item.SubCategories.Count != 0)
{
foreach (var subcat in item.SubCategories)
{
orderedList.Add(subcat);
if (subcat.SubCategories.Count != 0)
{
foreach (var subsubcat in subcat.SubCategories)
{
orderedList.Add(subsubcat);
}
}
}
}
}
IEnumerable<GroupedSelectListItem> groupList = orderedList.Select(p => new GroupedSelectListItem()
{
GroupKey = p.ParentCategory.Name,
GroupName = p.ParentCategory.Name,
Text = p.Name,
Value = p.Name
});
Сведения об ошибке
Строка 54: IEnumerable groupList = orderList.Select (p => new GroupedSelectListItem ()
ПРИМЕЧАНИЕ: Таблица для категорий в базе данных содержит элемент с ParentCategoryId для некоторых записей, равных нулю