Linq学习总结(6)——排序

本文介绍了如何使用LINQ进行升序和降序排序,并演示了如何实现次要排序。提供了使用LINQ关键字和扩展方法的具体示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。

LINQ默认的排序是升序排序,如果你想使用降序排序,就要使用descending关键字。

static void Main(string[] args)
{
    var dicts = new Dictionary<int, string>();

    dicts.Add(9, "Jack");
    dicts.Add(13, "Tom");
    dicts.Add(5, "Tod");
    dicts.Add(2, "Alics");

    var dictSorted = from n in dicts
                     orderby n.Key descending
                     select n;

    foreach (var item in dictSorted)
    {
        Console.WriteLine(item.Value);
    }
    /*Output
     * Tom
     * Jack
     * Tod
     * Alics
     */
}

以上的示例也可以直接使用扩展方法来达到相同的效果:

static void Main(string[] args)
{
    var dicts = new Dictionary<int, string>();

    dicts.Add(9, "Jack");
    dicts.Add(13, "Tom");
    dicts.Add(5, "Tod");
    dicts.Add(2, "Alics");

    foreach (var item in dicts.OrderByDescending(n=>n.Value))
    {
        Console.WriteLine(item.Value);
    }
}

输出结果跟上述示例是相同的。

LINQ的任何功能都是构建在扩展方法之上的,但有些功能拥有LINQ关键字,有些又只能通过扩展方法实现。比如Reverse扩展方法可以翻转集合中的元素,但并没有提供相应的LINQ关键字,所以只能通过扩展方法的方式调用。

关于排序的扩展方法有OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse。很多LINQ的关键字和它们的扩展方法名对应,有些则是隐含的,比如你加上Descending的关键字,就会调用mathodnameByDescending的扩展方法。

下面的示例来说明一下次要排序。从扩展方法的角度讲就是调用ThenBy扩展方法,而对于LINQ就是一个逗号分隔的列表,在orderby子句中,第一个值后面的项都属于次要排序。

static void Main(string[] args)
{
    var students = new[]{
        new {name="Jane",age=12,gender="famale"},
        new {name="Hank",age=15,gender="male"},
        new {name="Niko",age=12,gender="male"},
        new {name="Curry",age=12,gender="male"}
    };

    var sorted = from n in students
                orderby n.age, n.gender
                select n;

    foreach (var item in sorted)
    {
        Console.WriteLine(item);
    }

}

转载于:https://www.cnblogs.com/heqichang/archive/2011/08/03/2126640.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值