我在这个问题上搜索了很多错误
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();
帐户是查询帐户集合的类
BuildExpression功能
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
答案 0 :(得分:3)
Expression.Variable(typeof(Int32), companyid);
这会创建一个名为"220"
的变量
您从未声明过此变量或为其赋值。
相反,您需要Expression.Constant
,它接受一个值并返回一个具有该值的表达式
(您可能需要将字符串解析为int
)
但是,您根本不需要手动构建它。
相反,你应该写return a => a.CompanyId == companyId