LINQ多重排序,当不使用lambda表达式时

5

可能是重复问题:
LINQ中的多个“order by”

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

使用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
        };

我似乎找不到一个在“降序”之后起作用的方法(例如按计数降序排序,然后搜索查询)。

有什么想法吗?

2个回答

7

descending后面加上逗号,并指定要排序的下一项(可选添加descending),以此类推。


0

仅仅是为了补充一下 mlorbetske 的回答,如果你有这样一个 Customer 类:

public class Customer
{
    public string Name;
    public DateTime MemberSince;
}

然后,您可以执行这样的排序:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接