16
如何使用点符号在linq中执行左外连接?Linq - 带点符号的左外连接
这里的查询表达式:
var query = from u in db.Users
join d in db.Defects on u.userID equals d.userID into defectsGroup
from d in defectsGroup.DefaultIfEmpty()
select new { u, d };
这里是我的尝试:
var query2 = db.Users.GroupJoin(db.Defects.DefaultIfEmpty(),
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect });
但缺陷是显示为IEnumerable<Defect>
而不仅仅是Defect
。我也试过:
var query2 = db.Users.GroupJoin(db.Defects,
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect.DefaultIfEmpty() });
哪个根本不会编译。所有在线示例似乎都使用(更清晰)查询语法。
哇 - 我想这就是为什么所有的样品使用的是:) – 2011-03-30 14:54:07
@Adam查询语法:是的,连接是在查询语法,而更简单的:) – 2011-03-30 15:32:11
所有我能找到微软DefaultIfEmpty的文件说(和实例当给定的枚举为空时,它返回一个默认项目的枚举。左外部连接示例都显示它在枚举中的PARTICULAR项为null时返回默认项。我发现这很有效,但是这个特别的(明显不同的)方法的文档在哪里?谢谢! – 2011-04-26 14:48:59