2013-10-09 45 views
0

如何使用組連接方法語法?

我可以做一組參加像這樣的查詢語法:Dynamics CRM 2011 Linq Group加入方法語法

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

無論我怎麼努力,我得到這個消息:
的「羣組加入」操作必須跟一個「的SelectMany」
操作,其中集合選擇器調用'DefaultIfEmpty'方法。

我也很想使用IEqualityComparer;那可能嗎?

回答

1

在黑暗中總刺戳,因爲我沒有做很多Linq到CRM,但它轉換爲的QueryExpressions不支持返回整個實體。嘗試列出你想要返回的每一列,而不是實體本身。