Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 参数'';未在指定的LINQ to Entities查询表达式中绑定_C#_Entity Framework_Linq_Lambda - Fatal编程技术网

C# 参数'';未在指定的LINQ to Entities查询表达式中绑定

C# 参数'';未在指定的LINQ to Entities查询表达式中绑定,c#,entity-framework,linq,lambda,C#,Entity Framework,Linq,Lambda,我看到有很多题目类似的问题,但没有一个能解决我的问题。 我正在使用一个长而复杂的代码生成这个lambda表达式,我不想在这里粘贴它(如果需要,我可以粘贴): 我用这样的表达: var cust= db.CUST.Where(lambdaExpression); var custList= cust.ToList(); 当涉及ToList()时,会出现以下错误: 未在指定的LINQ到实体查询中绑定参数“” 表情 我的lambda表达式有什么问题?

我看到有很多题目类似的问题,但没有一个能解决我的问题。 我正在使用一个长而复杂的代码生成这个lambda表达式,我不想在这里粘贴它(如果需要,我可以粘贴):

我用这样的表达:

            var cust= db.CUST.Where(lambdaExpression);

            var custList= cust.ToList();
当涉及ToList()时,会出现以下错误:

未在指定的LINQ到实体查询中绑定参数“” 表情

我的lambda表达式有什么问题?当我尝试其他东西时,它是有效的,但这一个不起作用。谢谢

编辑:

这是我的密码:

 var property = typeof(CUSTOMER).GetProperty(newArray[0], BindingFlags.Instance | BindingFlags.Public);

                var parameter = Expression.Parameter(typeof(CUSTOMER));

                var memberExpression = Expression.Property(parameter, property);

                var value = Convert.ChangeType(newArray[1], property.PropertyType, CultureInfo.InvariantCulture);

                var eq = Expression.Equal(memberExpression, Expression.Constant(value));

                if (/*some condition*/)
                {



                    foreach (var elem in someotherlist)
                    {
                        var newelem= elem.Replace(" ", string.Empty);

                        string[] newArray = newelem.Split(':');
                        var listproperty = typeof(CUSTOMER).GetProperty(newArray[0], BindingFlags.Instance | BindingFlags.Public);

                        var listparameter = Expression.Parameter(typeof(CUSTOMER));

                        var listmemberExpression = Expression.Property(listparameter, listproperty);

                        var listvalue = Convert.ChangeType(newArray[1], property.PropertyType, CultureInfo.InvariantCulture);

                        var eqnew = Expression.Equal(listmemberExpression, Expression.Constant(listvalue));

                        eq = Expression.And(eq, eqnew); // I guess problem is here.
                    }


                }

你需要给我们你正在使用的实际代码。这并没有给我们任何关于哪个参数没有绑定的线索。@krillgar它可能是
STATE
,因为它在没有
STATE
的情况下工作。我们怎么知道呢?在伪代码中,您只有一个参数(Param0),但在表达式本身中引用了另外两个参数(Param_1和Param_2)。只需发布一些真实的代码即可。删除
var listparmeter=Expression.Parameter(typeof(CUSTOMER))并改用
参数
变量。
 var property = typeof(CUSTOMER).GetProperty(newArray[0], BindingFlags.Instance | BindingFlags.Public);

                var parameter = Expression.Parameter(typeof(CUSTOMER));

                var memberExpression = Expression.Property(parameter, property);

                var value = Convert.ChangeType(newArray[1], property.PropertyType, CultureInfo.InvariantCulture);

                var eq = Expression.Equal(memberExpression, Expression.Constant(value));

                if (/*some condition*/)
                {



                    foreach (var elem in someotherlist)
                    {
                        var newelem= elem.Replace(" ", string.Empty);

                        string[] newArray = newelem.Split(':');
                        var listproperty = typeof(CUSTOMER).GetProperty(newArray[0], BindingFlags.Instance | BindingFlags.Public);

                        var listparameter = Expression.Parameter(typeof(CUSTOMER));

                        var listmemberExpression = Expression.Property(listparameter, listproperty);

                        var listvalue = Convert.ChangeType(newArray[1], property.PropertyType, CultureInfo.InvariantCulture);

                        var eqnew = Expression.Equal(listmemberExpression, Expression.Constant(listvalue));

                        eq = Expression.And(eq, eqnew); // I guess problem is here.
                    }


                }