2013-12-02 3 views
0

Следующая проекция объединения бросает ошибку: «Операция« GroupJoin »должна сопровождаться операцией« SelectMany », в которой селектор коллекции вызывает метод« DefaultIfEmpty ». " Я выполнил несколько перестановок изменений, но не смог понять это. Мысли?Внешнее соединение с Linq, вызывающее ошибку «GroupJoin»

EDIT: Это все больше и больше, глядя, как этот может быть проблема 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

Просто проверено как с EF, так и с Linq to Objects - работает нормально, как ожидалось. Это определенно вопрос динамики CRM –

+1

Yep. Я уже понял это. Для меня. :( – Boydski

ответ

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; 
     } 

UPDATE
в образцах из msdn есть образец с левой присоединиться, так что вы можете попробовать мой код, указанный выше, или двигаться Where до GroupJoin или после SelectMany

Смежные вопросы