如何使用方法语法进行组连接?
我可以使用这样的查询语法进行组连接:
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;那有可能吗?
答案 0 :(得分:1)
黑暗中的总刺,因为我没有做很多Linq到CRM,但是它被转换为不支持返回整个实体的QueryExpressions。尝试列出要返回的每个列,而不是实体本身。