在单个LINQ to CRM查询中执行两个左外连接

时间:2015-09-29 23:05:02

标签: dynamics-crm dynamics-crm-online dynamics-crm-2015

我尝试在我的CRM在线2015 Update 1实例中执行两个左外连接,但是我收到了一个错误。这就是我目前所拥有的:

var query_join8 = from a in crmContext.AccountSet
                  join c in crmContext.ContactSet
                  on a.PrimaryContactId.Id equals c.ContactId
                  into gr
                  from c_joined in gr.DefaultIfEmpty()
                  join c in crmContext.ContactSet
                  on a.Name equals c.FullName
                  into gr2
                  from c2_joined in gr2.DefaultIfEmpty()
                  select new
                  {
                      contact_name = c_joined.FullName,
                      account_name = a.Name,
                      other_name = c2_joined.FullName
                  };

当我尝试执行它时,我收到此错误:

  

类型' System.NotSupportedException'的例外情况发生在   Microsoft.Xrm.Sdk.dll但未在用户代码中处理

     

其他信息:方法' GroupJoin'不能跟着   方法' SelectMany'或不受支持。尝试编写查询   支持方法的术语或称为“AsEnumerable”#39;或者' ToList'   调用不支持的方法之前的方法。

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

var query_join8 = from a in crmContext.AccountSet
                  join c in crmContext.ContactSet
                  on a.PrimaryContactId.Id equals c.ContactId
                  into gr
                  from c_joined in gr.DefaultIfEmpty()
                  //join c in crmContext.ContactSet
                  //on a.Name equals c.FullName
                  //into gr2
                  //from c2_joined in gr2.DefaultIfEmpty()
                  select new
                  {
                      contact_name = c_joined.FullName,
                      account_name = a.Name,
                      //other_name = c2_joined.FullName
                  };

Microsoft文档:

定义如何执行左连接:http://msdn.microsoft.com/en-us/library/gg509017.aspx#LeftJoin 博客描述它受支持:http://blogs.msdn.com/b/crminthefield/archive/2013/01/14/crm-2011-sdk-query-limitations-by-api.aspx

1 个答案:

答案 0 :(得分:1)

CRM 2015上的文档仍然表明不支持外连接。 (MSDN: Use LINQ to construct a query)我知道在MSDN上还有一个示例显示左连接(Sample: Complex LINQ queries),但我怀疑是否真的将其转换为单个QueryExpression。所以,我猜你正在达到凌为CRM的能力极限。