我不太擅长 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/