排序和多列排序

在 LINQ 里面的排序

-- SQL 写法
select * from Student where ID < 5
order by ID asc

-- 也可以按照多个字段进行排序的
select * from Student
order by Name asc,ClassID descCode language: JavaScript (javascript)

多列排序

using (var db = new DataClasses1DataContext())
{
    var q = from s in db.Student
            orderby s.Name ascending, s.ClassID descending
            select s;
    var r = q.ToList();
}Code language: JavaScript (javascript)

生成的 SQL:

SELECT [t0].[ID], [t0].[Name], [t0].[ClassID], [t0].[AddTime], [t0].[Status]
FROM [dbo].[Student] AS [t0]
ORDER BY [t0].[Name], [t0].[ClassID] DESCCode language: CSS (css)

要点:

  • ascending 可省略,默认就是升序(orderby s.Name 等效 orderby s.Name ascending
  • 多字段用逗号分隔,第二个字段开始用 ascending / descending 指定方向
  • 方法语法中用 ThenBy() / ThenByDescending() 追加第二排序条件

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注