orderby和sort的区别

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

在 C# 中,Sort 方法和 OrderBy 操作符都有各自的特点和适用场景。我们可以将它们视为不同的排序工具,而不是将一个视为高级或低级。

下面是一些关于 Sort 和 OrderBy 的比较:

  1. 功能:Sort 方法是就地排序,直接修改原始集合的顺序。它适用于对集合本身进行排序,不返回新的序列。OrderBy 操作符是按照指定的条件创建新的已排序序列,而不改变原始集合的顺序

  2. 集合类型:Sort 方法通常用于列表类型(List<T>),而 OrderBy 操作符可以用于各种可枚举集合,包括数组、列表和 LINQ 查询结果。

  3. 自定义排序:Sort 方法可以使用 lambda 表达式来提供自定义的排序逻辑,修改默认的比较方式。OrderBy 操作符也可以使用 lambda 表达式来定义比较条件。

  4. LINQ 查询:OrderBy 操作符通常与其他 LINQ 查询操作符一起使用,可以方便地构建复杂的查询表达式。Sort 方法是一个列表的实例方法,不直接与 LINQ 查询一起使用。

  5.  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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值