LINQ to Entities - 多个OrderBy方法不起作用

Dmi*_*y O 10 .net c# linq-to-entities sql-order-by

如果我将两个OrderBy方法应用于我的查询,就像那样

query.OrderBy(rec => rec.Name).OrderByDescending(rec => rec.Title);
Run Code Online (Sandbox Code Playgroud)

然后只应用第二种方法,忽略第一种方法.这是一个错误吗?如果我需要对一列进行升序排序而对另一列进行降序排序,该怎么办?是否通过方法语法完全无法实现?

Geo*_*ton 25

试试这个:

query.OrderBy(rec => rec.Name).ThenByDescending(rec => rec.Title);
Run Code Online (Sandbox Code Playgroud)

您的第二个OrderBy正在重置您的第一个结果集.这就是ThenBy扩展存在的原因.它将保留您的第一个结果集,同时对其应用其他排序.

从本质上讲,您作为伪造SQL的现有解决方案看起来像这样:

results = SELECT * FROM Obj ORDER BY Name;
results = SELECT * FROM results ORDER BY Title DESC;
Run Code Online (Sandbox Code Playgroud)

......这不是你想要的.该ThenBy扩展会是这个样子:

results = SELECT * FROM Obj ORDER BY Name ASC, Title DESC
Run Code Online (Sandbox Code Playgroud)