在 C# 中,Sort 方法和 OrderBy 操作符都有各自的特点和适用场景。我们可以将它们视为不同的排序工具,而不是将一个视为高级或低级。
下面是一些关于 Sort 和 OrderBy 的比较:
-
功能:
Sort方法是就地排序,直接修改原始集合的顺序。它适用于对集合本身进行排序,不返回新的序列。OrderBy操作符是按照指定的条件创建新的已排序序列,而不改变原始集合的顺序。 -
集合类型:
Sort方法通常用于列表类型(List<T>),而OrderBy操作符可以用于各种可枚举集合,包括数组、列表和 LINQ 查询结果。 -
自定义排序:
Sort方法可以使用 lambda 表达式来提供自定义的排序逻辑,修改默认的比较方式。OrderBy操作符也可以使用 lambda 表达式来定义比较条件。 -
LINQ 查询:
OrderBy操作符通常与其他 LINQ 查询操作符一起使用,可以方便地构建复杂的查询表达式。Sort方法是一个列表的实例方法,不直接与 LINQ 查询一起使用。 -
C# 中,
List<T>的Sort方法可以与 lambda 表达式结合使用,以提供自定义的排序逻辑。下面是一个示例,展示了如何使用
Sort方法和 lambda 表达式进行自定义排序:class Person { public string Name { get; set; } public int Age { get; set; } } List<Person> people = new List<Person> { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 30 }, new Person { Name = "Charlie", Age = 20 } }; // 使用 Sort 方法和 lambda 表达式进行自定义排序(按照年龄升序) people.Sort((x, y) => x.Age.CompareTo(y.Age)); // 输出结果 foreach (var person in people) { Console.WriteLine(person.Name + " - " + person.Age); }注意的是lambda 表达式中的两个参数
x和y表示要进行比较的两个元素,而 lambda 表达式的返回值表示比较的结果。返回值为负数表示x < y,返回值为正数表示x > y,返回值为零表示x == y。

文章对比了C#中Sort方法和OrderBy操作符在排序时的不同特点和应用场景。Sort方法是就地排序,适用于列表,不返回新序列,而OrderBy创建新序列,不影响原始数据。两者均支持自定义排序逻辑,常与lambda表达式结合使用。示例展示了如何用Sort方法按年龄升序排列Person对象列表。

27

被折叠的 条评论
为什么被折叠?



