【发布时间】:2016-01-17 19:20:06
【问题描述】:
我有一个对象建模工具栏列表,我正在尝试根据 4 个属性对其进行排序:
List<MenuItemViewModel> sortingList = new List<MenuItemViewModel>;
FillSortingList();
sortingList.OrderBy(m => m.RoleId)
.ThenBy(m => m.ToolbarLocation)
.ThenBy(m => m.Band)
.ThenBy(m => m.BandIndex);
对象的类型:
public class MenuItemViewModel : ViewModel
{
public int Id { get; set; }
public bool IsCheckable { get; private set; }
public string Name { get; private set; }
public int RoleId { get; private set; }
public int Band { get; set; }
public int BandIndex { get; set; }
public ToolbarLocation { get; set; }
}
ToolbarLocation 是同名的枚举:
public enum ToolbarLocation
{
Left = 0,
Top = 1,
Float = 2
}
关于 RoleId 的排序列表是可以的,但是在一个 RoleId 的范围内,位置 Top 和 Left 是混合的。与 Band 值 0 和 1 相同。一个角色范围内的唯一顺序是 BandIndex。
所以对我来说它似乎在做:
_sortingList.OrderBy(m => m.RoleId).ThenBy(m => m.BandIndex);
【问题讨论】:
-
您没有向我们展示 Band 或 BandIndex 是什么,因此很难真正提供帮助
-
你能发一个minimal reproducible example吗?
-
我编辑过,它们是整数
-
您确定您的问题不在于您希望排序就地进行吗?最后打电话给
.ToList(),如果是这样,重新分配_sortingList。 -
可以显示创建的列表吗?