Linq处理可变数量的OrderBy

Jer*_*Kur 3 c# linq linq-to-entities

我需要在Linq(to Entity)语句中支持可变数量的Orderby术语.也就是说,我的函数将接受数据应该在其上排序的属性列表.属性可以具有升序或降序排序.处理构造Linq查询的最佳方法是什么?

谢谢!

Jay*_*Jay 9

你应该能够沿着这些方向做点什么:

public IEnumerable<MyType> DoSomething(params Expression<Func<MyType,object>>[] properties)
 {
     var query = // create LINQ query that returns IQueryable<MyType>
     query = query.OrderBy(properties.First());

     foreach (var property in properties.Skip(1))
     {
         query = query.ThenBy(property);
     }
 }

 …

 var results = DoSomething(() => x.Age, () => x.Height, () => x.LastName);
Run Code Online (Sandbox Code Playgroud)

您需要处理指定少于2个属性的情况.