协慌网

登录 贡献 社区

LINQ 中的多个 “order by”

我有两个表, moviescategories ,我首先按类别 ID获取有序列表,然后按名称获取

影片表有三列, ID,Name 和 CategoryID 。类别表 2 包含列, ID 和名称

我尝试了类似下面的内容,但它没有用。

var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })

答案

这应该适合你:

var movies = _db.Movies.OrderBy(c => c.Category).ThenBy(n => n.Name)

使用非 lambda 查询语法 LINQ,您可以这样做:

var movies = from row in _db.Movies 
             orderby row.Category, row.Name
             select row;

[EDIT 来解决注释] 要控制排序顺序,请使用关键字ascending (这是默认值,因此不是特别有用)或descending ,如下所示:

var movies = from row in _db.Movies 
             orderby row.Category descending, row.Name
             select row;

添新”:

var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })

这适用于我的盒子。它确实返回了可用于排序的东西。它返回一个具有两个值的对象。

类似但不同于按组合列排序,如下所示。

var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))