簡體   English   中英

LINQ2SQL:加入多個表

[英]LINQ2SQL: Join multiple tables

我不是很擅長linq2sql甚至是sql,但是所有東西都帶有一點訓練。

我的問題:我有3個表:項目,文件夾和任務。

我需要進行查詢,以便我加入這3個表。

我試過了一下:

public ActionResult Details(string id) {
        var user = GetProfile().Id;
        var p = _db.Projects.Where(x => Convert.ToString(x.ProjectId) == id && x.UserId == user).SingleOrDefault();
        var f = _db.Folders.Where(x => x.ProjectId == p.ProjectId).ToList();
        return View(f);
    }

這工作正常,我得到與項目相關的文件夾。 現在我想在同一個查詢中查找與文件夾和項目相關的任務。

所以最后我得到這個場景:單擊項目名稱,發送ID,獲取ID,並顯示與我單擊的項目相關的文件夾,並在與文件夾相同的站點上顯示任務。

我不完全確定你在這里想要完成什么。 但這里是一個linq to sql查詢,我將項目文件夾和文件夾加入到任務中。 Project有一個名為ProjectId的字段,Folders也有一個“ProjectId”,我正在其中加入。 假設具有相同的命名約定,文件夾將具有“FolderId”並且任務也將具有“FolderId”。 希望能幫助到你:

var result = (from projects in _db.Projects
                      join folders in _db.Folders
                      on projects.ProjectId equals folders.ProjectId
                      join tasks in _db.Tasks
                      on folders.FolderId equals tasks.FolderId
                      where projects.Id.ToString() == id
                      && projects.UserId == user
                      select projects).ToList();

結果將表示符合條件的項目列表。

我不是將SQL轉換為Linq的專家,但本着提出一個可以反復使用的工具以將復雜的SQL查詢轉換為LINQ的精神,也許你可以看看

Linqer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM