2

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(expression).Where(expression) 就足够了吗?

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

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

1 回答 1

2

其实这个问题不是很清楚。但我注意到,如果您使用LINQ 动态查询库,您的问题可能会得到解决,然后您可以使用属性名称作为字符串来做任何您想做的事情(OrderBy,Where ....)

有关更多信息,请查看

于 2013-05-12T20:31:25.413 回答