我有一个这样的列表
List<Category> list = Category.getCategoryList();在Category类中我有public List<string> subCat { get; set; },一些类别有subCat,有些没有,我想按subCat对我的列表进行排序。其中带有subCat的类别是第一位的。我知道这将按catName排序
List<Category> SortedList = list.OrderBy(o => o.catName).ToList();如果列表中有subCat,我如何按subCat排序。任何帮助都会被接受。
发布于 2016-08-14 20:58:53
您可以按子类别的计数进行排序,因此您将首先拥有具有更多子类别的类别:
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();发布于 2016-08-15 02:38:04
如果希望按子类别的存在进行排序,请使用Any方法作为排序谓词:
//will order by the boolean value - due to the descending first the "true" and then "false"
var result = OrderByDescending(item => item.SubCat.Any());如果您想要按sum类别的数量排序:
var result = OrderByDescending(item => item.SubCat.Count());要按多个属性排序,请使用ThenBy。
https://stackoverflow.com/questions/38942446
复制相似问题