我有一个PolicyTran
对象列表:
List<PolicyTran> AllTransactions;
我需要按属性运行查询过滤,例如:
var insureds = AllTransactions.Select(x => x.Insured).ToList();
这很好用,但我需要x.Insured
在运行时传递该属性,因为该属性可以采用不同的值。
我试着做:
ParameterExpression x = Expression.Parameter(typeof (PolicyTran),"x");
MemberExpression body = Expression.Property(x, propertyName);
var lambda = Expression.Lambda(body,x).Compile();
var result = AllTransactions.Select(lambda).ToList();
在这种情况下propertyName
包含“被保险人”或任何其他PolicyTran
财产。但是我得到一个编译错误,说“类型参数不能由用法推断......”
我也尝试过,但没有运气:
ParameterExpression x = Expression.Parameter(typeof (PolicyTran),"x");
var result = AllTransactions.Select(Expression.Lambda<Func<PolicyTran, bool>>(x).Compile()).ToList();
有任何想法吗??