Dynamics crm 在单个LINQ到CRM查询中执行两个左外部联接

Dynamics crm 在单个LINQ到CRM查询中执行两个左外部联接,dynamics-crm,dynamics-crm-online,dynamics-crm-2015,Dynamics Crm,Dynamics Crm Online,Dynamics Crm 2015,我试图在我的CRM online 2015 Update 1实例中执行两个左外部联接,但出现错误。这就是我目前拥有的: var query\u join8=来自crmContext.AccountSet中的 在crmContext.ContactSet中加入c 在a.PrimaryContactId.Id上等于c.ContactId 进入gr 从c_加入到gr.DefaultIfEmpty()中 在crmContext.ContactSet中加入c 在a.Name上等于c.FullName 进入

我试图在我的CRM online 2015 Update 1实例中执行两个左外部联接,但出现错误。这就是我目前拥有的:

var query\u join8=来自crmContext.AccountSet中的
在crmContext.ContactSet中加入c
在a.PrimaryContactId.Id上等于c.ContactId
进入gr
从c_加入到gr.DefaultIfEmpty()中
在crmContext.ContactSet中加入c
在a.Name上等于c.FullName
进入gr2
从c2_加入gr2.DefaultIfEmpty()
选择新的
{
contact_name=c_joined.FullName,
账户名称=账户名称,
other_name=c2_joined.FullName
};
当我尝试执行它时,我得到以下错误:

中发生“System.NotSupportedException”类型的异常 Microsoft.Xrm.Sdk.dll,但未在用户代码中处理

其他信息:“GroupJoin”方法不能跟随 不支持方法“SelectMany”或。尝试在中写入查询 支持的方法的术语或调用“AsEnumerable”或“ToList” 方法,然后调用不支持的方法

如果我注释掉第二个连接,它可以正常工作:

var query\u join8=来自crmContext.AccountSet中的
在crmContext.ContactSet中加入c
在a.PrimaryContactId.Id上等于c.ContactId
进入gr
从c_加入到gr.DefaultIfEmpty()中
//在crmContext.ContactSet中加入c
//在a.Name上等于c.FullName
//进入gr2
//从c2_加入gr2.DefaultIfEmpty()
选择新的
{
contact_name=c_joined.FullName,
账户名称=账户名称,
//other_name=c2_joined.FullName
};
Microsoft文档: 定义如何执行左联接:
描述其受支持的博客:

关于CRM 2015的文档仍然声明不支持外部联接。()我知道MSDN上也有一个显示左连接()的示例,但我怀疑这是否真的转化为单个
QueryExpression
。因此,我想您已经达到了Ling for CRM功能的极限。

我将直接从我的示例“示例:复杂LINQ查询”开始,它只适用于一个,但似乎不适用于两个。是的,我猜您已经达到了极限,但不知怎的,左连接似乎没有得到完全支持。我很好奇CRM是如何将Linq查询转换为QueryExpression的。您可以在RequestMultiple上运行一个插件来输出查询表达式,因此可以看到转换是如何执行的,但这只适用于有效的Linq查询,由于查询已转换为客户端上的查询表达式。作为一种解决方法,您可以检索第二个外部联接的目标,然后执行纯linq操作?@Draiden,这将起作用,但我不会将其描述为可接受的解决方案。