【发布时间】:2017-11-29 14:23:34
【问题描述】:
由于我是 Linq 的新手,因此无法将此 SQL 查询转换为 Linq,因此我粘贴了我已经尝试过的代码,它给出了空记录。
提前致谢。
这是我尝试过的 Linq C# 语句:
from ts in Db.Tasks
join prt in Db.ProjectTasks on ts.Id equals prt.TaskId into PojTsk
from t1 in PojTsk
join TL in Db.Timeline on ts.Id equals TL.TypeId into Tmln
from t2 in Tmln
join DUR in Db.Duration on ts.Id equals DUR.TypeId into Dur
from t3 in Tmln
where t1.ProjectId == ProjectId
&& t2.Type == (int)Provider.EntityType.TASK
&& t3.Type == (int)Provider.EntityType.TASK
select ts
这是我尝试使用 C# 转换为 Linq 的 SQL 查询:
SELECT
CONCAT('T', R1.Id) as Id,
R1.Name, R1.Description, R1.Priority,
R1.Stage, R1.Status, R1.CreatorId,
R2.ProjectId, R3.StartDate, R3.EndDate,
R3.LatestEndDate, R3.LatestStartDate,
R3.EarliestStartDate, R3.ActualStart, R3.ActualEnd,
R3.RemTime, R3.ReshowDate, R3.RemTime, R3.Completed,
R4.ActualDuration, R4.ActualDurationPlanned
FROM
(SELECT *
FROM [ProjectManagement].[dbo].[Tasks] AS TS) AS R1
JOIN
(SELECT *
FROM [ProjectManagement].[dbo].[ProjectTasks]) AS R2 ON R1.Id = R2.TaskId
LEFT JOIN
(SELECT * FROM [ProjectManagement].[dbo].[Timelines]
WHERE Type = 3) AS R3 ON R1.Id = R3.TypeId
LEFT JOIN
(SELECT * FROM [ProjectManagement].[dbo].[Durations]
WHERE Type = 3) AS R4 ON R1.Id = R4.TypeId
WHERE
ProjectId = 1
【问题讨论】:
-
没有select * from的语法。
-
你试过这个吗? sqltolinq.com
-
@Mahesh Malpani,你怎么能说“没有 select * from 的语法”我已经在我的 SQL Server Management Studio 上测试了这个查询
-
您现在询问特定库。不确定,但您可以使用实体框架和 .net linq 来代替