我们有一个对象
public class SomeObject { public Name {get;set;} public City {get;set;} public State {get;set} //various other parameters. Let's say there's ~20 }
是否可以在不重新编译源代码的情况下动态创建新的LINQ查询?而是,查询参数来自在数据库中存储和更新的XML结构。
var result = from i in someObj where //XML requests Name = 'Bob'...so append this where clause name = 'Bob'
能做到吗?
这是一个表达式树的解决方案:
var param = Expression.Parameter(typeof(SomeObject), "p"); var exp = Expression.Lambda<Func<SomeObject, bool>>( Expression.Equal( Expression.Property(param, "Name"), Expression.Constant("Bob") ), param ); var query = someObj.Where(exp);
我知道它要复杂得多,但这有时可能会有用。