1.) 我有一个实体查询,例如:return myEntityStore.Query<theType>(x => x.Name == "whatevs");
但是,理想情况下,我想调用一个将其他表达式附加到原始查询的函数,例如 OrderBy 和更多Where's。
类似这样的事情:
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);
}
2.) 这里明显的问题之一是我正在使用 <T>
,那么有没有办法将属性指定为字符串或其他东西?
<T>(expression).OrderBy(x => "x.ThisColumnExistsIPromise");
3.) Query 函数已经将表达式转换为Where(),那么简单地执行Where(表达式).Where(表达式)就足够了吗?
那么,归根结底,以下内容是否可以实现?
entityStore.Query<T>(originalExpression).Where(additionalExpression).Where(x => "x.Active == true").OrderBy(x => "x.OrderBy");
最佳答案
其实这个问题不太清楚。但我注意到,如果您使用 LINQ Dynamic Query Library ,您的问题可能会得到解决 那么你可以使用属性名称作为字符串来执行你想要的任何操作(OrderBy,Where ....)
有关更多信息,请查看this
关于c# - 多个 LINQ 表达式和动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511639/