不使用 lambda 表达式时的 LINQ 多重排序 [重复]

Posted

技术标签:

【中文标题】不使用 lambda 表达式时的 LINQ 多重排序 [重复]【英文标题】:LINQ Multiple order by when not using lambda expressions [duplicate] 【发布时间】:2012-12-22 12:53:31 【问题描述】:

可能重复:Multiple “order by” in LINQ

我想按某个字段排序一些数据集,然后按其他字段排序。

使用 lambda 表达式这很容易(OrderBy.ThenBy),但是当我有这样的语法时该怎么做:

 int maxQueries = int.MaxValue;
        // finds the most search for queries
        var ordered = from p in searchLogs
        where !string.IsNullOrEmpty(p.SearchQuery)
        group p by new 
         
           SearchQuery = p.SearchQuery
         
        into pgroup
        let count = pgroup.Count()
        orderby count descending
        select new 
         
            Count = count, 
            SearchQuery = pgroup.Key.SearchQuery
        ;

我似乎找不到在降序关键字之后起作用的方法(例如 orderby count 降序然后 searchquery)..

有什么想法吗?

【问题讨论】:

【参考方案1】:

descending 后面加一个逗号并指定下一个排序依据(可选添加descending)等等

【讨论】:

【参考方案2】:

如果您有这样的客户类,只需向 mlorbetske 答案添加一些代码:

public class Customer

    public string Name;
    public DateTime MemberSince;

然后您可以执行如下排序:

var q = from c in Customers
        orderby c.MemberSince.Date descending, c.Name
        select c;

【讨论】:

以上是关于不使用 lambda 表达式时的 LINQ 多重排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 lambda 表达式的 LINQ where 子句具有 OR 子句和返回不完整结果的空值

Linq之Lambda表达式

错误:对于带有 from 的 Linq,“表达式树 lambda 可能不包含空传播运算符”

如何在 LINQ 选择语句中使用 Lambda

什么是Linq表达式?什么是Lambda表达式?

LINQ:使用 Lambda 表达式获取 CheckBoxList 的所有选定值