如何将组加入与方法语法一起使用?
我可以使用如下查询语法进行组加入:
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;这可能吗?