我想检查给定的Expression<Func<TSource,bool>>
是否使用TSource
的给定属性,例如我有Customer
类型:
public class Customer
{
public bool Active{get;set;}
// ...
}
我有流畅的表达方式:
var exp1 = q => q.Name.Contains("a") && q.Addresses.Any(x=>x.City.Contains("b")) && q.Active;
var exp2 = q => q.Name.Contains("a") && q.Addresses.Any(x=>x.City.Contains("b"));
var exp3 = q => q.Name.Contains("a") && q.Addresses.Any(x=>x.City.Contains("b")) && q.Active || !q.Active;
var exp4 = q => q.Name.Contains("a") && q.Addresses.Any(x=>x.City.Contains("b")) && q.Active == isActive; // isActive is a variable.
或者像这样的任何表达式,我如何检查该表达式是否使用Property Active或No(如果可能)。提前谢谢。
答案 0 :(得分:0)
我想一个肮脏的方法就是这样做:
bool containsActive = exp1.ToString().Contains(".Active");
但是,如果你有这样的表达,请记住:
var exp2 = q => q.Name.Contains("a") &&
q.Addresses.Any(x=>x.City.Contains(".Active"));
这也将返回true
因为整个表达式被视为字符串.Active
。