C# Can';t构建lambda表达式树

C# Can';t构建lambda表达式树,c#,.net,winforms,lambda,expression-trees,C#,.net,Winforms,Lambda,Expression Trees,尝试使用表达式树创建以下表达式(需要帮助) 并将对函数的所有引用更改为接收表达式,而不是二进制表达式。这一行有问题 var key = param.GetType().GetProperty("LabelName"); param.GetType()将返回没有LabelName属性的System.Linq.Expressions.ParameterExpression 您应该使用typeof(dt\u Label).GetProperty(“LabelName”)这一行有问题 var key

尝试使用表达式树创建以下表达式(需要帮助)

并将对函数的所有引用更改为接收表达式,而不是二进制表达式。这一行有问题

var key = param.GetType().GetProperty("LabelName");
param.GetType()
将返回没有
LabelName
属性的
System.Linq.Expressions.ParameterExpression

您应该使用
typeof(dt\u Label).GetProperty(“LabelName”)
这一行有问题

var key = param.GetType().GetProperty("LabelName");
param.GetType()
将返回没有
LabelName
属性的
System.Linq.Expressions.ParameterExpression



您应该使用
typeof(dt_Label).GetProperty(“LabelName”)

而无需进一步查看,我可以看到
param.GetType().GetProperty(“LabelName”)
是错误的-您可能需要
typeof(dt\U标签)
在这里。为什么需要表达式树?在这个问题中似乎没有问题。你的问题是什么?我的问题是如何构建表达式:List lstLabName=dt_Label.Select(x=>x.LabelName).Where(p=>p.LabelName.StartsWith(lstName+'.');我需要表达式树,因为“lstName”是字符串列表,我希望表达式在其中迭代。我的运行时错误在CreateBaryExpression函数上失败,如果不进一步查看,我可以看到
param.GetType().GetProperty(“LabelName”)
是错误的-您可能需要
typeof(dt\U标签)
在这里。为什么需要表达式树?在这个问题中似乎没有问题。你的问题是什么?我的问题是如何构建表达式:List lstLabName=dt_Label.Select(x=>x.LabelName).Where(p=>p.LabelName.StartsWith(lstName+'.');我需要表达式树,因为“lstName”是字符串列表,我希望表达式在其中迭代。我的运行时错误在CreateBaryExpression函数上失败,而不是:var key=param.GetType().GetProperty(“LabelName”);我尝试过:var key=param.Type.GetField(“LabelName”);但是key会为null,为什么?我想得到的是:dt_Label.LabelName然后尝试
typeof(dt_Label).GetProperty(“LabelName”)
。关于
param.Type
我可能是错的,谢谢你这么多的帮助:var key=typeof(dt_Label).GetProperty(“LabelName”);用你的评论写一个新的答案,我会写这就是答案,到目前为止,我该怎么做呢?原样:Expression.startsWith代替:var key=param.GetType().GetProperty(“LabelName”);我尝试过:var key=param.Type.GetField(“LabelName”);但是key会为null,为什么?我想得到的是:dt_Label.LabelName然后尝试
typeof(dt_Label).GetProperty(“LabelName”)
。关于
param.Type
我可能是错的,谢谢你这么多的帮助:var key=typeof(dt_Label).GetProperty(“LabelName”);用你的评论写一个新的答案,我会写这就是答案,到目前为止,我该怎么做呢?原样:Expression.StartsWith
    private Expression CreateBinaryExpression(string buildName)
    {
        // x.LabelName
        var param = Expression.Parameter(typeof(dt_Label), "x");
        var key = typeof(dt_Label).GetProperty("LabelName");

        var left = Expression.MakeMemberAccess(param, key);

        ConstantExpression constantExpression = Expression.Constant(buildName + '_', typeof(string));

        //x.LabelName.startsWith(buildName_)
        MethodInfo mi = typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) });
        Expression call = Expression.Call(left, mi, constantExpression);

        return call;
    };
var key = param.GetType().GetProperty("LabelName");