【发布时间】:2014-05-27 01:01:59
【问题描述】:
我的 Web 项目中有一个局部视图,它负责在导航菜单中显示项目。导航菜单项模型上有一个 SortOrder 属性,负责显示它们出现的顺序。未排序的默认值为 0。因此,我需要按任何大于 0 的值排序,然后按未排序的菜单项的名称排序。问题是我的 linq 查询不尊重我的排序顺序。相反,它首先显示排序顺序值为 0 的项目。我将 MVC 4 与 .Net 框架目标 4.5 一起使用。感谢您的任何意见。
下面是我的代码:
@model IEnumerable<Models.Item>
@helper ShowItems(List<Models.Item> items)
{
<ul>
@foreach(var item in items)
{
<li>
@item.DisplayName
@if(Model.Any(x => x.ParentId == item.Id))
{
@ShowItem(Model.Where(x => x.ParentId == item.Id).OrderBy(x => x.SortOrder.Value > 0).ThenBy(y => y.DisplayName).ToList())
}
</li>
}
</ul>
}
@ShowItems(Model.Where(x => !x.ParentId.HasValue || x.ParentId.Value == 0).OrderBy(x => x.SortOrder.Value > 0).ThenBy(y => y.DisplayName).ToList());
【问题讨论】:
-
您需要升序排列的非零 SortOrder 值吗?
-
是的。我没有提到那个细节。我很抱歉。
标签: c# asp.net asp.net-mvc linq razor