我有一个像这样的列表
List<Category> list = Category.getCategoryList();
在类别类中,我有public List<string> subCat { get; set; }
,有些类别有subCat而有些类别没有,我想通过subCat订购我的列表。其中subCat的类别排在第一位。
我知道这将按catName排序
List<Category> SortedList = list.OrderBy(o => o.catName).ToList();
如何通过subCat对列表中的subCat进行排序。 任何帮助都是适当的。
答案 0 :(得分:1)
您可以按子类别的计数进行排序,这样您将首先拥有包含更多子项的类别:
var sorted = list.OrderByDescending(o => o.subCat != null ? o.subCat.Count : 0).ToList();
如果您想按类别名称订购并首先显示带子类别的类别,您可以使用ThenBy
:
var sorted = list
.OrderBy(o => o.subCat != null && o.subCat.Count > 0 ? 0 : 1)
.ThenBy(o => o.catName)
.ToList();
答案 1 :(得分:1)
如果要按子类别的存在进行排序,请使用Any
方法排序谓词:
//will order by the boolean value - due to the descending first the "true" and then "false"
var result = OrderByDescending(item => item.SubCat.Any());
如果您想按总和类别的数量订购:
var result = OrderByDescending(item => item.SubCat.Count());
要按多个属性进行排序,请使用ThenBy
。