兩張表:數據庫
var query = db.Categories // 第一張表 .Join(db.CategoryMaps, // 第二張表 c => c.CategoryId, // 主鍵 cm => cm.ChildCategoryId, // 外鍵 (c, cm) => new { Category = c, CategoryMap = cm }) // 關聯後的結果對象集 .Select(x => x.Category); // select 查詢結果集
多張表:spa
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) .OrderBy(p=>p.UID) .Take(10);
優勢:coding方便code
缺點:join多張表的情景,代碼冗長對象
替代方法:建立數據庫視圖,對視圖進行EF查詢blog