首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按list<string>计数对List<>排序

按list<string>计数对List<>排序
EN

Stack Overflow用户
提问于 2016-08-14 20:53:23
回答 2查看 476关注 0票数 0

我有一个这样的列表

代码语言:javascript
复制
List<Category> list = Category.getCategoryList();

在Category类中我有public List<string> subCat { get; set; },一些类别有subCat,有些没有,我想按subCat对我的列表进行排序。其中带有subCat的类别是第一位的。我知道这将按catName排序

代码语言:javascript
复制
List<Category> SortedList = list.OrderBy(o => o.catName).ToList();

如果列表中有subCat,我如何按subCat排序。任何帮助都会被接受。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-14 20:58:53

您可以按子类别的计数进行排序,因此您将首先拥有具有更多子类别的类别:

代码语言:javascript
复制
var sorted = list.OrderByDescending(o => o.subCat != null ? o.subCat.Count : 0).ToList();

如果您想按类别名称排序,并首先显示带有子类别的类别,则可以使用ThenBy

代码语言:javascript
复制
var sorted = list
                .OrderBy(o => o.subCat != null && o.subCat.Count > 0 ? 0 : 1)
                .ThenBy(o => o.catName)
                .ToList();
票数 1
EN

Stack Overflow用户

发布于 2016-08-15 02:38:04

如果希望按子类别的存在进行排序,请使用Any方法作为排序谓词:

代码语言:javascript
复制
//will order by the boolean value - due to the descending first the "true" and then "false"
var result = OrderByDescending(item => item.SubCat.Any());

如果您想要按sum类别的数量排序:

代码语言:javascript
复制
var result = OrderByDescending(item => item.SubCat.Count());

要按多个属性排序,请使用ThenBy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38942446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档