与Linq的外部联接导致" GroupJoin"错误

时间:2013-12-02 19:54:41

标签: linq dynamics-crm-2011 left-join outer-join xrm

以下连接投影抛出错误 “'GroupJoin'操作必须后跟'SelectMany'操作,其中集合选择器正在调用'DefaultIfEmpty'方法。” 我已经完成了一些变更的排列,但还是无法弄清楚。想法?

编辑:它看起来越来越像 可能是一个Dynamics CRM问题 。我正在访问数据的Xrm模型已由CRM SDK(CRM 2011)生成。

var q =
   left
     .GroupJoin(right, 
                c => c.Id, 
                cl => cl.c.Id, 
                (c, cs) => new { c, cs })
     .Where(x=>x.c.Name.Contains("some text"))
     .SelectMany(x => x.cs.DefaultIfEmpty(), (x, csubl) =>
        new
        {
            CompanyName = x.c.Name
        });

1 个答案:

答案 0 :(得分:0)

我认为在查询语法中它会更漂亮

var q = from l in left
        join r in right on l.Id equals r.c.Id into groupped
        from g in groupped.DefaultIfEmpty()
        where l.Name.Contains("some text")
        select new { 
            CompanyName = l.Name; 
        }

<强>更新
来自msdn的示例包含左连接的示例,因此您可以尝试上面的代码,或者在Where之前或GroupJoin之后移动SelectMany