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

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 组合:
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); // 年龄升序.OrderBy(...).ThenBy(...).ThenBy(...)。IOrderedEnumerable<T>。通过本文,你已经掌握了 C# LINQ排序 的核心技巧:使用 OrderBy 进行主排序,配合 ThenBy 实现多级排序。这种写法不仅代码简洁,而且逻辑清晰,是处理复杂排序需求的利器。
记住这些关键词:**C# LINQ排序**、**OrderBy ThenBy用法**、**LINQ多级排序**、**C#数据排序技巧**——它们将帮助你在实际开发中快速定位解决方案。
赶快在你的项目中试试吧!你会发现,原来数据排序可以如此优雅。
本文由主机测评网于2025-12-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025123863.html