c# - LINQ2SQL : Join multiple tables

标签 c# linq-to-sql asp.net-mvc-2

我不太擅长 linq2sql 甚至 sql,但一切都需要经过一些培训。

我的问题: 我有 3 张 table : 项目, 文件夹和 任务。

我需要进行查询以便加入这 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();

结果将代表符合条件的项目列表。

关于c# - LINQ2SQL : Join multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629254/

相关文章:

linq-to-sql - Linq 2 SQL,将具有关联子对象列表的对象插入数据库,Silverlight RIA

linq - 如何对带有子属性的集合进行排序?

c# - 将一个局部 View 数据传递给另一个局部 View

c# - 根据列值-linq删除重复项

c# - Linq 计数(条件)未按预期工作

c# - 转换十进制?加倍?

c# - Winforms WPF 互操作性能

c# - 在 .net 核心控制台应用程序中创建一个 websocket 服务器

asp.net-mvc-2 - foreach 语句不能对类型为 '' 的变量进行操作,因为 '' 不包含 'GetEnumerator' 的公共(public)定义

c# - 添加和删​​除匿名事件处理程序