我有tsql查询。它工作正常。我想将其转换为linq查询或lambda表达式
DECLARE @myHID BIGINT;
SET @myHID = 1;
WITH tblChild AS
(
SELECT *
FROM wbs.WBS w WHERE w.ParentId = @myHID
UNION ALL
SELECT w2.* FROM wbs.WBS w2 JOIN tblChild ON w2.ParentId =
tblChild.hID
)
SELECT
tblChild.hID, Unit.ID, w3.wbsName + ' * ' + tblChild.wbsName,
tblChild.FK_WbsBaseStructure_hID, tblChild.parentID, unitNumber,
unitTitle, FK_UsageItem_ID, usageTitle, nominalArea
FROM tblChild
inner join unit.Unit on tblChild.hID = Unit.FK_WBS_hID
inner join unit.UsageItem on Unit.FK_UsageItem_ID = UsageItem.ID
left join wbs.WBS w3 on tblChild.parentID = w3.hID
感谢的
答案 0 :(得分:0)
我没有注意到你在SQL中使用了递归CTE。不幸的是,没有良好的直接翻译递归CTE。建议的方法是根据递归SQL和访问权限创建存储过程或视图。
将SQL转换为LINQ,
DISTINCT
,TOP
等)作为应用于整个LINQ查询的函数。new { }
)from
,后跟.DefaultIfEmpty()
。coalesce
。Concat
使用UNION ALL
,Union
使用UNION
。