在使用Entity Framework時,若有多個排序,需要OrderBy (OrderByDescending)再ThenBy (ThenByDescending)
假設需要根據Name升序排序,再根據Id降序排序,則:
using (EFContext<Member> context = new EFContext<Member>()) { var lst = context.Table.OrderBy(m => m.Name).ThenByDescending(e => e.Id).ToList(); foreach (var item in lst) { Console.WriteLine("name:{0}, Id:{1}",item.Name,item.Id); } }
借助System.Linq.Dynamic的方式
首先需要在項目中引用System.Linq.Dynamic,可以借助Nuget工具添加引用
引入命名空間System.Linq.Dynamic
using System.Linq.Dynamic;
修改上面的代碼,
using (EFContext<Member> context = new EFContext<Member>()) { var lst = context.Table.OrderBy("Name asc,Id desc").ToList(); foreach (var item in lst) { Console.WriteLine("name:{0}, Id:{1}",item.Name,item.Id); } }
此處可以看到,OrderBy()方法傳入的是排序字符串