繁体   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