我正在将数据集拉入 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/