c# - 如何对数据为分层树(菜单)的 C# 数据列表进行排序?

标签 c# sorting

我正在将数据集拉入 C# 列表并对其进行排序。这是一个分层菜单:

示例对象:

public class NavigationInfo
{
    public Int32 Id { get; set; }
    public Int32 ParentId { get; set; } 
    public String Text { get; set; }
    public String Url { get; set; }
    public Int32 Sort { get; set; }
}

ParentId 是 Id 的递归,并且 Sort 是 ParentId 内的升序整数。这是如何使用 NavigationInfo 的集合来完成的?在List<NavigationInfo>

最佳答案

你可以这样做:

var navigationInfos = new List<NavigationInfo>(); //fill this collection

navigationInfos.sort((a,b) => a.Id.CompareTo(b.Id)); //sort by Id
navigationInfos.sort((a,b) => a.ParentId.CompareTo(b.ParentId)); //sort by ParentId

更新:您还可以使用 LINQ 并在列表上执行 OrderBy。这会返回一个新集合,但按多个标准(升序或降序)排序要容易得多。

var navigationInfos = new List<NavigationInfo>(); //fill this collection
var listSortedById = navigationInfos
                             .OrderBy(n => n.Id).ToList();

var listSortedByParentId = navigationInfos
                               .OrderBy(n => n.ParentId).ToList();

var listSortedByIdThenByParentId = navigationInfos
                              .OrderBy(n => n.Id)
                              .ThenBy(p => p.ParentId)
                              .ToList();

var orderedByIdDescending = navigationInfos
                                      .OrderByDescending(n => n.Id)
                                      .ToList();

关于c# - 如何对数据为分层树(菜单)的 C# 数据列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894644/

相关文章:

C#泛型类型参数是泛型类型

JAVA HashSet 顺序

C++合并排序不会合并?

c++ - 对 vector 的整数元素进行排序

php - 拉维尔 : How to take last n(any number) rows after ordered in ascending order?

c# - Rest API 返回基于角色或不同实体的属性

c# - 以编程方式绑定(bind) GridViewComboBoxColumn 数据源

c# - Microsoft 报表查看器 ASP.NET

c# - ASP.NET DropDownValue 不会跨 webfarm 中的一台服务器持久保存

javascript - Last.fm 使用 JQuery 进行 JSON 排序