Я использую Nhibernate для извлечения страниц с их подстраницами для создания структуры меню на моей странице. Все получается нормально, я получаю всю правильную информацию, но я не могу заставить OrderBy работать со списком подстраниц. Я добавил в число заказа и могу вывести его на экран без проблем, просто не могу его отсортировать по нему!
menu.MenuItems = _session.Query<Page>().Where(a => a.IncludeInMenu).Where(b => b.ParentPage == null).OrderBy(c => c.MenuOrder).Select(d => new MenuItem
{
Route = "/" + d.Route,
Name = d.Name,
Current = (d.Id == id),
Clickable = d.Clickable,
SubItems = d.SubPages.Where(e => e.IncludeInMenu).OrderBy(f => f.MenuOrder).Select(g => new SubItem
{
Id = g.Id,
Route = !string.IsNullOrEmpty(g.Redirect) ? g.Redirect : g.Route,
Name = g.Name,
Order = g.MenuOrder,
Text = g.MetaDescription,
Redirect = g.RedirectType
}).OrderBy(h => h.Order).ToList()
}).ToList();
Порядок на верхнем уровне, кажется, работает нормально , Я попытался сделать то же самое снова на подуровне и упорядочить по факту с помощью только что созданного поля Порядок. Но ни один не работает. Page.MenuOrder и SubItem.Order оба находятся просто в полях:
public class MenuItem
{
public string Name { get; set; }
public string Route { get; set; }
public bool Current { get; set; }
public virtual bool Clickable { get; set; }
public List<SubItem> SubItems { get; set; }
}
public class SubItem
{
public int Id { get; set; }
public string Name { get; set; }
public string Route { get; set; }
public string Text { get; set; }
public int? Redirect { get; set; }
public int Order { get; set; }
}
Я вывожу в моем представлении так:
<nav id="nav">
<ul>@foreach (var MenuItem in Model.Menu.MenuItems)
{
<li>
<a href="@MenuItem.Route">@MenuItem.Name</a>
@if (MenuItem.SubItems != null && MenuItem.SubItems.Count > 0)
{
<ul>
@foreach (var SubItem in MenuItem.SubItems)
{
<li>
<a href="@SubItem.Route">
@SubItem.Name
</a>
</li>
}
</ul>
}
</li>
}
</ul>
</nav>
В моей базе данных идентификаторы элементов Также заказывайте товары так же, как это делает заказ, так что я понятия не имею, где он получает заказ, из которого он выбирает. Они выходят как 3, 1, 4, 2.
Если у кого-нибудь есть идеи, почему этот подсписок не будет выводиться в порядке, который я устанавливаю, я был бы очень признателен!