2017-11-21 9 views
0

tsql 쿼리가 있습니다. 그것은 잘 작동합니다. 내가 LINQ 쿼리 또는 람다 식으로 변환 할자식 - 부모 SQL 쿼리를 linq 또는 λ 식으로 변환하는 방법

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을 기반으로 저장 프로 시저 또는 뷰를 만들고 액세스하는 것입니다. LINQ에 SQL을 변환하는

,

  1. 전체 LINQ 쿼리에 적용되는 기능으로 모나드 사업자 (DISTINCT, TOP 등)을 떠나,
  2. LINQ 절 순서대로 각 절을 번역 별도의 변수로 부속 선택을 번역 .
  3. 표 별칭을 범위 변수로 사용하십시오. 익명 형식 필드 이름으로 열 별칭을 사용하십시오.
  4. 왼쪽 가입 여러 열에 대한
  5. 사용 익명 형식 (new { })는 변수 조인을 사용하고 .DefaultIfEmpty() 다음 조인 변수에서 다른 from을 수행하여 시뮬레이션합니다.
  6. coalesce을 조건부 연산자와 Null 테스트로 바꿉니다.
  7. UNION ALL에 대해 ConcatUNION에 대해 Union을 사용하십시오.
+0

나는 그것을 할 수 없다. 도와주세요. – user3425037

+0

변환 방법을 보여줄 수 있습니까? – user3425037