【问题标题】:Sorting lambda expression for this [duplicate]为此[重复]排序lambda表达式
【发布时间】:2013-07-12 21:52:14
【问题描述】:

我有一个想要排序的项目列表,但我似乎无法正确使用 lambda 表达式。有人可以引导我使用 lambda 表达式吗? 谢谢

未排序的列表项:

number: 2, Date: 21/10/2010 11:22:55
number: 1, Date: 21/10/2010 11:22:55
number: 2, Date: 20/10/2010 12:10:00
number: 1, Date: 20/10/2010 12:10:00

排序列表项:

number: 1, Date: 21/10/2010 11:22:55
number: 1, Date: 20/10/2010 12:10:00
number: 2, Date: 21/10/2010 11:22:55
number: 2, Date: 20/10/2010 12:10:00

itemList.sort((x, y) => ...);

【问题讨论】:

    标签: c# .net linq lambda


    【解决方案1】:

    您可以使用 Linq 的 OrderByThenByDescending 扩展方法:

    using System.Linq;
    ...
    
    var sortedItems = 
        itemList.OrderBy(x => x.number)
                .ThenByDescending(x => x.Date);
    

    这将创建一个新对象。如果您想将其分配回原来的 itemList,只需执行以下操作:

    using System.Linq;
    ...
    
    itemList = itemList.OrderBy(x => x.number)
                       .ThenByDescending(x => x.Date)
                       .ToList();
    

    【讨论】:

    • 我忘了说明 itemList 数据类型是 List。本机 C# 列表中没有 orderby 方法
    • 好吧,这就是 System.Linq 命名空间的用途。
    • 有.. 你可能需要使用 System.Linq;因为所有的 Linq 都是作为 IEnumerable 上的扩展方法实现的
    • 哦,我忘了添加 linq 命名空间
    • @user1599647,这是一种扩展方法。
    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多