2011-12-29 2 views
1

У меня есть этот запрос:LINQ ошибка с ToList

(from r in gServiceContext.CreateQuery("opportunity") 
    join c in gServiceContext.CreateQuery("contact") on ((EntityReference)r["new_contact"]).Id equals c["contactid"] 
    join n in gServiceContext.CreateQuery("annotation") on r["opportunityid"] equals ((EntityReference)n["objectid"]).Id into opp 
    from o in opp.DefaultIfEmpty().ToList() 
    where ((EntityReference)r["new_channelpartner"]).Id.Equals(lProfileProperty.PropertyValue) && ((OptionSetValue)r["new_leadstatus"]).Equals("100000002") 

с ToList() я получаю эту ошибку:

The method 'GroupJoin' cannot follow the method 'Join' or is not supported. Try writing the query in terms of supported methods or call the 'AsEnumerable' or 'ToList' method before calling unsupported methods.

Если я беру ToList прочь я получаю ту же ошибку. Есть ли это, чтобы исправить это, или я делаю это совершенно неправильно?

Спасибо!

Side Note: Я использую DefaultIfEmpty, потому что мне нужно, чтобы он по-прежнему вытаскивал записи, даже если запись, к которой он присоединился, имеет значение NULL.

ответ

1

Вы не используете группировку, так это должно работать:

(from r in gServiceContext.CreateQuery("opportunity") 
    join c in gServiceContext.CreateQuery("contact") on ((EntityReference)r["new_contact"]).Id equals c["contactid"] 
    join n in gServiceContext.CreateQuery("annotation") on r["opportunityid"] equals ((EntityReference)n["objectid"]).Id 
    where ((EntityReference)r["new_channelpartner"]).Id.Equals(lProfileProperty.PropertyValue) && ((OptionSetValue)r["new_leadstatus"]).Equals("100000002") 

Изменить

join c in gServiceContext.CreateQuery("contact") 

в

join c in gServiceContext.CreateQuery("contact").DefaultIfEmpty() 
+0

Спасибо, что работает по большей части. Нет ошибок, но у меня был DefaultIfEmpty, потому что у некоторых записей в контактах есть нулевые записи, и я хочу по-прежнему вытащить их, если запись, к которой он присоединился, имеет значение null. Это возможно с этим запросом? –

+1

@ Justin, эй, я обновил, чтобы включить это для вас – Mondo

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