CRM 2011:发生了类型为“System.InvalidOperationException”的未处理exception。 从范围”引用,但它没有定义

我执行此查询时收到以下错误消息。 如果我删除第二个where子句,查询工作正常。

(from cl in context.CreateQuery() join a in context.CreateQuery() on cl.CustomerId.Id equals a.AccountId where cl.StateCode.Value == 0 where cl.new_SupportedBy == a.Name select cl).ToList(); 

错误

An unhandled exception of type 'System.InvalidOperationException' occurred in ConsoleApplication1.exe

Additional information: variable 'h__TransparentIdentifier0' of type 'f__AnonymousType0``2[ConsoleApplication1.ContractDetail,ConsoleApplication1.Account]' referenced from scope '', but it is not defined

UPDATE

尝试将where子句中的值硬编码如下,并将其工作时间。 无法理解是什么问题。

首先尝试:

 where cl.new_SupportedBy == "abc" 

其次:

 where a.Name == "abc" 

Linq Pad引发的例外情况

 at System.Linq.Expressions.Compiler.VariableBinder.Reference(ParameterExpression node, VariableStorageKind storage) at System.Linq.Expressions.Compiler.VariableBinder.VisitParameter(ParameterExpression node) at System.Linq.Expressions.ParameterExpression.Accept(ExpressionVisitor visitor) at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) at System.Linq.Expressions.ExpressionVisitor.VisitMember(MemberExpression node) at System.Linq.Expressions.MemberExpression.Accept(ExpressionVisitor visitor) at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) at System.Linq.Expressions.ExpressionVisitor.VisitMember(MemberExpression node) at System.Linq.Expressions.MemberExpression.Accept(ExpressionVisitor visitor) at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) at System.Linq.Expressions.ExpressionVisitor.Visit(ReadOnlyCollection`1 nodes) at System.Linq.Expressions.Compiler.VariableBinder.VisitLambda[T](Expression`1 node) at System.Linq.Expressions.Expression`1.Accept(ExpressionVisitor visitor) at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator) at Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateExpressionToValue(Expression exp, ParameterExpression[] parameters) at Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateExpressionToConditionValue(Expression exp, ParameterExpression[] parameters) at Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateWhereCondition(BinaryExpression be, FilterExpressionWrapper parentFilter, Func`2 getFilter, Boolean negate) at Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateWhere(String parameterName, BinaryExpression be, FilterExpressionWrapper parentFilter, Func`2 getFilter, List`1 linkLookups, Boolean negate) at Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateWhereBoolean(String parameterName, Expression exp, FilterExpressionWrapper parentFilter, Func`2 getFilter, List`1 linkLookups, BinaryExpression parent, Boolean negate) at Microsoft.Xrm.Sdk.Linq.QueryProvider.GetQueryExpression(Expression expression, Boolean& throwIfSequenceIsEmpty, Boolean& throwIfSequenceNotSingle, Projection& projection, NavigationSource& source, List`1& linkLookups) at Microsoft.Xrm.Sdk.Linq.QueryProvider.Execute[TElement](Expression expression) at Microsoft.Xrm.Sdk.Linq.QueryProvider.GetEnumerator[TElement](Expression expression) at Microsoft.Xrm.Sdk.Linq.Query`1.GetEnumerator() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at UserQuery.RunUserAuthoredQuery() in c:\Users\abc\AppData\Local\Temp\LINQPad\_nmuxfnrq\query_lnnofb.cs:line 34 

提前致谢

我把问题排序如下:

 var contractLines = (from cl in context.CreateQuery() join a in context.CreateQuery() on cl.CustomerId.Id equals a.AccountId where cl.StateCode.Value == 0 select new {cl, a}).ToList(); var collection = new EntityCollection(); foreach (var line in contractLines) { if (line.a.Name == line.cl.dbc_SupportedBy) { collection.Entities.Add(line.cl); } } 

我明白,这不是一个完美的解决方案。 但由于这个应用程序只运行一次,所以我不介意它是否运行缓慢。 但我仍然很想知道错误发生的原因,所以我会保持这个问题。

更新

保持开放超过六个月没有任何回复。 所以我现在关闭它,因为这个解决方法对我有效,并且为了我的答案接受百分比而关闭:P

也许cl.new_SupportedBy == a.Name就是问题所在

您不能编写CRM LINQ查询,其中where子句包含比较属性的谓词; 即使这些属性是在同一个实体实例上定义的。

https://social.microsoft.com/Forums/en-US/2d510944-c46f-4698-a6aa-c3ed5f76dc77/freaky-linq-issues-with-joins?forum=crmdevelopment