1
我PolicyTran
对象的列表:如何在运行时将字符串的属性名称传递给lambda?
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
财产。 但我得到一个编译错误说“之类参数不能由ussage推断......”
我也试过,但没有运气:
ParameterExpression x = Expression.Parameter(typeof (PolicyTran),"x");
var result = AllTransactions.Select(Expression.Lambda<Func<PolicyTran, bool>>(x).Compile()).ToList();
任何想法?
工作完美,谢谢!我很接近......当它让我接受你的答案时 –