c# – 检测应用于IQueryable的位置
如何检测IQueryable< T>有一个where过滤器应用?
在这段代码中,我需要以编程方式知道queryFiltered有一个应用于它的地方而查询没有 IQueryable<Customer> query = Context.Customers; IQueryable<Customer> queryFiltered = Context.Customers .Where(c=>c.Name.Contains("ABC")); 解决方法
您必须解析
IQueryable<T> 实施中从
Expression property返回的
Expression .
在爬行Expression树时,您必须查询被调用的 另请注意,虽然Queryable.Where将是检测where过滤器的最常用方法,但查询语法允许使用其他实现(取决于
值得注意的是,ExpressionVisitor类实现需要在类级别上存储和公开状态.因此,最好(IMO)创建一次性执行操作的内部类,然后使用一个公共方法,每次都创建一个ExpressionVisitor的新实例;这将有助于处理变异状态,如果正确完成,将允许该方法也是线程安全的(如果这是您的关注). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |