不使用 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 子句和返回不完整结果的空值