【问题标题】:Dynamic Expression Building Error动态表达式构建错误
【发布时间】:2013-08-26 14:10:36
【问题描述】:

我已经搜索了很多关于这个问题这里有什么问题

Shorter version of my code is
/// companyid  is integer type value here is 220
    var cond1 = BuildExpression(companyId);
    var acntlst=entities.Accounts.Where(cond).ToList();

Account 是一个查询 Account 集合的类

构建表达式函数

 private static Expression<Func<Account, bool>> BuildExpression(string companyid)

 {
    var paramexp = Expression.Parameter(typeof (Account), "p");
     var proprty = typeof(Account).GetProperty("CompanyId");
     var prpexp = Expression.Property(paramexp, proprty);

     var varexp = Expression.Variable(typeof(Int32), companyid);
     var cond1 = Expression.Equal(prpexp, varexp);

     return Expression.Lambda<Func<Account, bool>>(cond1,paramexp);
    }

错误信息是

The parameter '220' was not bound in the specified LINQ to Entities query expression

【问题讨论】:

    标签: linq c#-4.0 lambda


    【解决方案1】:
    Expression.Variable(typeof(Int32), companyid);
    

    这将创建一个名为"220"变量
    您从未声明此变量或为其赋值。

    相反,您需要Expression.Constant,它接受一个值并返回一个具有该值的表达式。
    (您可能需要将字符串解析为int

    但是,您根本不需要手动构建它。

    相反,您应该只写return a =&gt; a.CompanyId == companyId

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2021-11-20
      相关资源
      最近更新 更多