我看过许多类似的帖子,似乎我声明的 var1 似乎需要在其他地方传递,但我似乎无法弄清楚。
public Expression<Func<ElementNode, bool>> CreateEqualNameExpression(string match)
{
var parm = Expression.Parameter(typeof(ElementNode), "element");
var expr = Expression.Call(parm, typeof(ElementNode).GetProperty("Name").GetGetMethod());
var var1 = Expression.Variable(typeof(string), "elementName");
var assign = Expression.Assign(var1, expr);
var parm2 = Expression.Constant(match, typeof(string));
var exp = Expression.Equal(assign, parm2);
return Expression.Lambda<Func<ElementNode, bool>>(exp, new[] { parm });
}
基本上我正在尝试创建一个代表
(ElementNode ele) => ele.Name == match;
但我很难想出解决方案。任何帮助将不胜感激。
我收到错误:从范围引用的“System.STring”类型的“elementName”,但未定义。