C# 多个LINQ表达式和动态特性

C# 多个LINQ表达式和动态特性,c#,sql,linq,generics,expression,C#,Sql,Linq,Generics,Expression,1.)我有一个实体查询,比如:returnmyEntityStore.query(x=>x.Name==“whatevs”) 但是,理想情况下,我希望调用一个函数,将其他表达式附加到原始查询中,比如OrderBy和其他Where 大概是这样的: public IQueryable<T> ProcessQuery<T>(System.Linq.Expressions.Expression<Func<T, bool>> theOriginalQuery

1.)我有一个实体查询,比如:
returnmyEntityStore.query(x=>x.Name==“whatevs”)

但是,理想情况下,我希望调用一个函数,将其他表达式附加到原始查询中,比如OrderBy和其他Where

大概是这样的:

public IQueryable<T> ProcessQuery<T>(System.Linq.Expressions.Expression<Func<T, bool>> theOriginalQuery) where T: class
    {
        return EntityStore.Query<T>(theOriginalQuery).Where(x => x.Active == true).OrderBy(x => x.OrderBy);
    }
public IQueryable ProcessQuery(System.Linq.Expressions.Expression-theOriginalQuery),其中T:class
{
返回EntityStore.Query(theOriginalQuery).Where(x=>x.Active==true).OrderBy(x=>x.OrderBy);
}
2.)这里的一个明显问题是,我正在使用
,因此有没有办法将属性指定为字符串或其他内容

<T>(expression).OrderBy(x => "x.ThisColumnExistsIPromise");
(表达式).OrderBy(x=>“x.ThisColumnExistsIPromise”);
3.)查询函数已将表达式转换为Where(),因此只需执行Where(表达式)即可。Where(表达式)

那么,归根结底,是否有可能实现以下目标

entityStore.Query<T>(originalExpression).Where(additionalExpression).Where(x => "x.Active == true").OrderBy(x => "x.OrderBy");
entityStore.Query(originalExpression).Where(additionalExpression).Where(x=>“x.Active==true”).OrderBy(x=>“x.OrderBy”);

事实上,问题并不那么清楚。但是我注意到,如果您使用,那么您可以使用属性名作为字符串来执行任何您想要的操作(OrderBy,Where…)


有关更多信息,请参阅

,正如您可能猜到的,我们的模式标准强制每个表都有一个“Active”和“OrderBy”列。您是否考虑过在每个类型上使用这两个属性实现接口?