Ada*_*kis 17 c# linq linq-to-entities
如何使用点表示法在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 };
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
var query2 = db.Users.GroupJoin(db.Defects.DefaultIfEmpty(),
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect });
Run Code Online (Sandbox Code Playgroud)
但缺陷显示的IEnumerable<Defect>
不仅仅是公正Defect
.我也尝试过:
var query2 = db.Users.GroupJoin(db.Defects,
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect.DefaultIfEmpty() });
Run Code Online (Sandbox Code Playgroud)
这根本就不编译.所有在线示例似乎都使用(更清晰的)查询语法.
Jon*_*eet 25
我想你想要这个:
var query2 = db.Users.GroupJoin(db.Defects,
u => u.userId,
d => d.userID,
(u, defectsGroup) => new { u, defectsGroup})
.SelectMany(z => z.defectsGroup.DefaultIfEmpty(),
(z, d) => new { z.u, d });
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅有关查询表达式的Edulinq博客文章.