【发布时间】:2013-12-14 15:28:51
【问题描述】:
我有一个名为 Workbook 的表,它与表“Revisorsberetning”具有一对多的关系,该表与 Project 是多对一的关系。 所以: 工作簿 --> Revisorsberetning --> 项目
我只想获取与给定 WorkbookId 的工作簿相关的项目列表
我尝试将以下 SQL(SQL 工作)转换为 LINQ,但没有成功:
select Project.PROJECT_NAME
from Project
inner join dbo.Revisorsberetning
on dbo.Revisorsberetning.Project_ProjectId = dbo.Project.ProjectId
inner join dbo.Workbook
on dbo.Workbook.WorkbookId = 2
这是似乎无法正常工作的 LINQ(LinqPAD,这就是为什么您看到 projectS 而没有 dbcontext)查询:
var sss = from u in Projects
join uc in Revisorsberetnings on u.ProjectId equals uc.Project.ProjectId
join c in Workbooks on uc.Workbook.WorkbookId equals c.WorkbookId
where c.WorkbookId == 2
select u.PROJECT_NAME;
【问题讨论】:
-
如果你的意思是返回另一个值,试试
select new {u.PROJECT_NAME, u.ProjectId }; -
也在你的 linq 中的 sql
dbo.Workbook.WorkbookId = 2c.WorkbookId == 1 -
@Grundy 这只是一个错字,与我遇到的问题无关
-
@RedHotScalability 为什么不在 LIQN 查询中写
on c.WorkbookId == 2以匹配 SQL 查询?您的 SQL 不会将Workbook链接到任何其他表,只是抓取 id 为 2 的行。 -
@Grundy 已删除所有错别字,它们与问题无关。 SQL 查询返回 4 个元素,LINQ 查询返回两个元素。所以查询本身有问题,而不是结果的表示(SELECT)
标签: linq sql-to-linq-conversion