多字段排序(orderby)
orderby 后面跟多个字段,用逗号分隔,每个字段可指定 ascending(默认)或 descending。
static void Main(string[] args)
{
using (var dbContext = new DataClasses1DataContext())
{
var q = from u in dbContext.User
orderby u.Name descending, u.Password ascending
select u;
var list = q.ToList();
}
}Code language: JavaScript (javascript)
生成的 SQL:
SELECT [t0].[ID], [t0].[Name], [t0].[Password], [t0].[Status], [t0].[AddTime]
FROM [dbo].[User] AS [t0]
ORDER BY [t0].[Name] DESC, [t0].[Password]Code language: CSS (css)
写法说明:
| 写法 | 等效 SQL |
|---|---|
orderby u.Name descending | ORDER BY Name DESC |
orderby u.Name descending, u.Password ascending | ORDER BY Name DESC, Password |
| 不写方向(默认) | ORDER BY 字段 ASC |
关键要点:
| 要点 | 说明 |
|---|---|
| 多字段排序 | 逗号分隔,依次生效 |
| 排序方向 | descending 降序,ascending 升序(可省略) |
| 执行位置 | 翻译为 ORDER BY 子句,数据库端排序 |
| 方法语法 | dbContext.User.OrderByDescending(u => u.Name).ThenBy(u => u.Password) |
Previous: 三表关联后按部分表分组,非分组表字段打包成列表
Next: DefaultIfEmpty 处理空集合聚合