来自DbContext .NET上的反射的菊花链方法

时间:2014-06-25 18:51:03

标签: c# .net entity-framework reflection

我的问题是,我想根据列表中的对象调用.OrderBy()和多个.ThenBy()

因此,对于4个对象,它将是:

db.Entity.Where(lambda expression).OrderBy(lambda from object1).ThenBy(lambda from object2).ThenBy(lambda from object3).ThenBy(lambda from object4).

如何通过循环反射调用上述方法的等效方法?

我很可能必须通过反思来做到这一点......比如:

foreach(var sortLambda in sortLambdaList)
{
  //Build expression to build daisy-chain method call

}

1 个答案:

答案 0 :(得分:1)

这可能会变得更加滑动,但总的想法是。

var query = db.Entity.Where(lambda expression);
var first = true; 
foreach(var sortLambda in sortLambdaList)
{
    if (first) {
        query = query.OrderBy(sortLambda);
    } else {
        first = false; 
        query = query.ThenBy(sortLamda);
    }
}