【发布时间】:2017-05-14 16:31:09
【问题描述】:
如何在 C# 中将此 Lambda 转换为表达式树
var FieldName="SomeDynamicField";
var param = "SomeParam"
//Lambda to beCreated
x=>x.FieldName!=null && x.FieldName.ToLower().Contains(param )
到目前为止我已经尝试过了
private static Expression GetPropertyExpression(PropertyInfo prop, ParameterExpression paramExpr, ConstantExpression valueExpr) {
var memberAcc = Expression.MakeMemberAccess(paramExpr, prop);
Console.WriteLine(memberAcc);
var containsMember = typeof(string).GetMethod("Contains");
var toLower= typeof(String).GetMethod("ToLower",new [] {typeof(string)});
var ttt=Expression.Call(memberAcc,containsMember, valueExpr);
return Expression.Call(memberAcc,containsMember, valueExpr);
}
【问题讨论】:
-
到目前为止你尝试了什么?你被困在哪里了?
-
我一直在尝试编写此代码来过滤任何 List.it 工作但大写
-
私有静态表达式 GetPropertyExpression(PropertyInfo prop, ParameterExpression paramExpr, ConstantExpression valueExpr) { var memberAcc = Expression.MakeMemberAccess(paramExpr, prop); // Console.WriteLine(memberAcc); var containsMember = typeof(string).GetMethod("Contains"); var toLower= typeof(String).GetMethod("ToLower",new [] {typeof(string)}); var ttt=Expression.Call(memberAcc,containsMember, valueExpr);返回 Expression.Call(memberAcc,containsMember, valueExpr); }
-
请将代码添加到您的问题中,而不是在评论中,至少您可以以一种好的方式对其进行格式化(使用您问题下的
edit链接)
标签: c# asp.net .net linq lambda