LINQ'da çoklu "order by"

Filmler ve kategoriler olmak üzere iki tablom var ve önce categoryID ve ardından Name'e göre sıralı bir liste alıyorum.

Film tablosunda ID, Name ve CategoryID olmak üzere üç sütun vardır. Kategori tablosunda ID ve Name olmak üzere iki sütun vardır.

Aşağıdaki gibi bir şey denedim ama işe yaramadı.

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

Bu işinize yarayacaktır:

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

Lambda olmayan, sorgu sözdizimi LINQ kullanarak bunu yapabilirsiniz:

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

[Sıralama düzenini kontrol etmek için yükselen (varsayılandır ve bu nedenle özellikle kullanışlı değildir) veya azalan anahtar kelimelerini kullanın:

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

"new" ekleyin:

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

Bu benim kutumda çalışıyor. Sıralamak için kullanılabilecek bir şey döndürüyor. İki değer içeren bir nesne döndürür.

Aşağıdaki gibi birleştirilmiş sütuna göre sıralamaya benzer, ancak farklıdır.

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