【发布时间】:2013-10-09 17:00:30
【问题描述】:
如何通过方法语法使用组加入?
我可以使用如下查询语法进行组加入:
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;这可能吗?
【问题讨论】: