当前位置:首页 > C# > 正文

掌握C# LINQ排序:OrderBy与ThenBy的高效组合(小白也能学会的LINQ多级排序技巧)

在C#开发中,对数据进行排序是日常操作之一。借助LINQ(Language Integrated Query),我们可以非常简洁、优雅地完成单字段或多字段排序。本文将深入浅出地讲解 OrderByThenBy 的使用方法,帮助你轻松掌握 C# LINQ排序 技巧,即使是编程新手也能快速上手!

掌握C# LINQ排序:OrderBy与ThenBy的高效组合(小白也能学会的LINQ多级排序技巧) C# LINQ排序  OrderBy ThenBy用法 LINQ多级排序 C#数据排序技巧 第1张

什么是OrderBy和ThenBy?

OrderBy 是LINQ中最常用的排序方法,用于对集合按指定字段进行升序排序(若需降序则使用 OrderByDescending)。

但当我们需要按多个字段排序时(例如:先按部门排序,再按姓名排序),就需要用到 ThenBy(或 ThenByDescending)。ThenBy 必须跟在 OrderBy 之后使用,用于指定次级排序条件。

基础示例:单字段排序

假设我们有一个员工列表,每个员工包含姓名和年龄:

public class Employee{    public string Name { get; set; }    public int Age { get; set; }    public string Department { get; set; }}// 创建员工列表var employees = new List<Employee>{    new Employee { Name = "张三", Age = 28, Department = "技术部" },    new Employee { Name = "李四", Age = 25, Department = "市场部" },    new Employee { Name = "王五", Age = 30, Department = "技术部" },    new Employee { Name = "赵六", Age = 22, Department = "市场部" }};

现在我们想按年龄从小到大排序:

var sortedByAge = employees.OrderBy(e => e.Age);foreach (var emp in sortedByAge){    Console.WriteLine($"{emp.Name}, {emp.Age}岁");}

输出结果:

Vsix, 22岁李四, 25岁张三, 28岁王五, 30岁

进阶技巧:多字段排序(OrderBy + ThenBy)

现在我们希望:先按部门排序,同一部门内再按年龄升序排列。这时就要用到 OrderBy + ThenBy 组合:

var multiSorted = employees    .OrderBy(e => e.Department)      // 主排序:按部门    .ThenBy(e => e.Age);            // 次排序:按年龄foreach (var emp in multiSorted){    Console.WriteLine($"{emp.Department} - {emp.Name} ({emp.Age}岁)");}

输出结果:

市场部 - 赵六 (22岁)市场部 - 李四 (25岁)技术部 - 张三 (28岁)技术部 - 王五 (30岁)

注意:如果你希望部门按字母倒序、年龄正序,可以这样写:

var mixedOrder = employees    .OrderByDescending(e => e.Department)  // 部门降序    .ThenBy(e => e.Age);                  // 年龄升序

常见误区与注意事项

  • ThenBy 不能单独使用:它必须紧跟在 OrderBy 或 OrderByDescending 之后。
  • 多个排序条件可链式调用:如 .OrderBy(...).ThenBy(...).ThenBy(...)
  • LINQ排序是稳定排序:相等元素的原始顺序会被保留。
  • 排序不会修改原集合,而是返回一个新的 IOrderedEnumerable<T>

总结

通过本文,你已经掌握了 C# LINQ排序 的核心技巧:使用 OrderBy 进行主排序,配合 ThenBy 实现多级排序。这种写法不仅代码简洁,而且逻辑清晰,是处理复杂排序需求的利器。

记住这些关键词:**C# LINQ排序**、**OrderBy ThenBy用法**、**LINQ多级排序**、**C#数据排序技巧**——它们将帮助你在实际开发中快速定位解决方案。

赶快在你的项目中试试吧!你会发现,原来数据排序可以如此优雅。