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