当我尝试编译如下所示的 lambda 时,它会抛出:
从范围“”引用了“System.Collections.Generic.IEnumerable`1[WheelEndCatalogKendo.Models.SapBasicData]”类型的变量“模型”,但未定义
public static GridBoundColumnBuilder<TModel> BuildColumnString<TModel>(this GridBoundColumnBuilder<TModel> column, WebViewPage<IEnumerable<TModel>> webViewPage, int width) where TModel : class {
var modelParameter = Expression.Parameter(typeof(IEnumerable<TModel>), "model");
Expression<Func<IEnumerable<TModel>, TModel>> firstItem = (model) => model.FirstOrDefault();
var member = MemberExpression.Property(firstItem.Body, column.Column.Member);
var lambda = Expression.Lambda<Func<IEnumerable<TModel>, string>>(member, modelParameter);
var title = webViewPage.Html.DisplayNameFor(lambda).ToHtmlString();
var header = webViewPage.Html.ShortLabelFor(lambda).ToHtmlString().FixUpNewLinesAsHtml();
var compiled = lambda.Compile(); //Throws here with "variable '...' of type '...' referenced from scope '', but it is not defined"
....
}
我看到几个类似的帖子;但到目前为止,他们还没有让我了解我的代码问题。似乎我正在提供 lambda 变量(作为第二个参数参数)。然而,我几乎没有创作表达式树的经验。
有任何想法吗?