LINQ Присоединиться, где NULLS возвращаются также - PullRequest
0 голосов
/ 25 августа 2011

Я пытаюсь выполнить JOIN в операторе LINQ, где он также возвращает значения NULL.Мой код:

var linqQuery = (from r in orgServiceContext.CreateQuery("opportunity")
     join a in orgServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals a["accountid"]
     join c in orgServiceContext.CreateQuery("contact") on ((EntityReference)r["new_contact"]).Id equals c["contactid"]
     where ((EntityReference)r["new_channelpartner"]).Id.Equals(new Guid("c55c2e09-a3be-e011-8b2e-00505691002b"))
     select new
     {
         OpportunityId = !r.Contains("opportunityid") ? string.Empty : r["opportunityid"],
         CustomerId = !r.Contains("customerid") ? string.Empty : ((EntityReference)r["customerid"]).Name,
         Priority = !r.Contains("opportunityratingcode") ? string.Empty : r.FormattedValues["opportunityratingcode"],
         ContactName = !r.Contains("new_contact") ? string.Empty : ((EntityReference)r["new_contact"]).Name,
         Source = !r.Contains("new_source") ? string.Empty : r["new_source"],
         CreatedOn = !r.Contains("createdon") ? string.Empty : r["createdon"],
         State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
         Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
         Eval = !r.Contains("new_colderevaluation") ? string.Empty : r.FormattedValues["new_colderevaluation"],
         DistributorName = !r.Contains("new_channelpartner") ? string.Empty : ((EntityReference)r["new_channelpartner"]).Name,
         ContactStreetAddress = !c.Contains("address1_line1") ? string.Empty : c["address1_line1"]
     });

Это сводит на нет одну запись, в которой были совпадения контактов, но я также хочу, чтобы она сбивала записи с пустым контактом.

Любые идеи, как это сделать

1 Ответ

0 голосов
/ 25 августа 2011

Правые внешние объединения не поддерживаются в LINQ. Рассмотрите возможность реорганизации исходных таблиц, чтобы вы могли выполнить левое внешнее объединение с помощью метода расширения DistinctIfEmpty. В качестве альтернативы вы можете использовать LINQ-версию SQL-Ansi82 вместо объединений, написав все объединения в виде предложений where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...