猿问

实体框架加入3个表

实体框架加入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字段。

非常感谢


白猪掌柜的
浏览 334回答 3
3回答

慕神8447489

我认为使用基于语法的查询会更容易: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)返回正确的前十项。

红颜莎娜

这是未经测试的,但我相信语法应该适用于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);

绝地无双

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);
随时随地看视频慕课网APP
我要回答