0

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

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
4

1 回答 1

3
Expression.Variable(typeof(Int32), companyid);

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

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

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

相反,你应该只写return a => a.CompanyId == companyId

于 2013-08-26T14:15:10.457 回答