實體框架加入3個表我想加入三張桌子,但我無法理解這個方法......我完成了加入2個表 var entryPoint = dbContext.tbl_EntryPoint .Join(dbContext.tbl_Entry,
c => c.EID,
cm => cm.EID,
(c, cm) => new
{
UID = cm.OwnerUID,
TID = cm.TID,
EID = c.EID,
}).
Where(a => a.UID == user.UID).Take(10);我想在TID PK中包含tbl_Title表并獲取Title字段。非常感謝
3 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
我認為使用基于語法的查詢會更容易:
var entryPoint = (from ep in dbContext.tbl_EntryPoint join e in dbContext.tbl_Entry on ep.EID equals e.EID join t in dbContext.tbl_Title on e.TID equals t.TID where e.OwnerID == user.UID select new { UID = e.OwnerID, TID = e.TID, Title = t.Title, EID = e.EID }).Take(10);
你應該添加orderby
子句,以確保Top(10)
返回正確的前十項。

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
這是未經測試的,但我相信語法應該適用于lambda查詢。當您使用此語法連接更多表時,您必須深入查看新對象以獲得要操作的值。
var fullEntries = dbContext.tbl_EntryPoint .Join( dbContext.tbl_Entry, entryPoint => entryPoint.EID, entry => entry.EID, (entryPoint, entry) => new { entryPoint, entry } ) .Join( dbContext.tbl_Title, combinedEntry => combinedEntry.entry.TID, title => title.TID, (combinedEntry, title) => new { UID = combinedEntry.entry.OwnerUID, TID = combinedEntry.entry.TID, EID = combinedEntry.entryPoint.EID, Title = title.Title } ) .Where(fullEntry => fullEntry.UID == user.UID) .Take(10);

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
var entryPoint = (from ep in dbContext.tbl_EntryPoint join e in dbContext.tbl_Entry on ep.EID equals e.EID join t in dbContext.tbl_Title on e.TID equals t.TID where e.OwnerID == user.UID select new { UID = e.OwnerID, TID = e.TID, Title = t.Title, EID = e.EID }).Take(10);
- 3 回答
- 0 關注
- 356 瀏覽
添加回答
舉報
0/150
提交
取消