2013-10-09 3 views
0

Как я могу использовать групповое соединение с синтаксисом метода?

я могу сделать группу присоединиться к синтаксису запроса, как это:Dynamics CRM 2011 Linq Group Join Method Синтаксис

var contAndAcc = from contact in linq.ContactSet 
        join account in linq.AccountSet 
        on contact.ParentCustomerId.Id equals account.AccountId 
        into accountGroup 
        from account in accountGroup.DefaultIfEmpty() 
        select new{contact = contact, account = account}; 


Компилятор преобразует синтаксис запроса в синтаксис метода, поэтому он должен быть возможно написать выше в синтаксисе метода.
Они не работают:

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet, // collection to join to 
    contact => contact.ParentCustomerId.Id, 
    account => account.AccountId, 
    (contact, account) => contact); 

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet, 
    contact => contact.ParentCustomerId.Id, 
    account => account.AccountId, 
    (contact, account) => contact) 
    .DefaultIfEmpty() 
    .Select(contact=>contact); 

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet, 
    contact => contact.ParentCustomerId.Id, 
    account => account.AccountId, 
    (contact, account) => contact) 
    .DefaultIfEmpty() 
    .SelectMany((contact) => contact); 

Независимо от того, что я стараюсь я получаю сообщение:
Операция «GroupJoin» должно быть, за которым следует «SelectMany»
операции, где селектор коллекции Призывая 'DefaultIfEmpty'.

Я также очень хотел бы использовать IEqualityComparer; это будет возможно?

ответ

1

Общий удар в темноте, так как я не делаю много Linq для CRM, но QueryExpressions, которые он преобразует, не поддерживает возврат всей сущности. Попробуйте указать каждый столбец, который вы хотите вернуть, а не сами сущности.

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