无需重新编译即可动态生成 LINQ 查询
在查询参数源自动态更新的外部数据的场景中,需要生成 LINQ 查询无需重新编译源代码。考虑像 SomeObject 这样具有大量属性的对象。
通过从数据库中存储的 XML 结构中提取条件来动态创建新的 LINQ 查询是否可行?
例如:
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);
虽然这种方法要复杂得多,但它在需要动态查询生成的特定场景中提供了解决方案。
以上是是否可以从 XML 数据动态生成 LINQ 查询而无需重新编译?的详细内容。更多信息请关注PHP中文网其他相关文章!