0

누구든지이 SQL 쿼리를 도와 EF Linq Expression으로 변환 할 수 있습니까?Sql Query to EF Linq Expression

SELECT Aitimata.id, AST.dateCr, AST.StatusId, Aitimata.UniqueCode, Aitimata.CategoryId, Aitimata.Thema 
FROM   Aitimata INNER JOIN 
    (select a.* from AitimataStatus a join 
    (select AitimaId, max(dateCr) AS dateCr 
    from AitimataStatus 
    group by AitimaId) b 
    on a.AitimaId = b.AitimaId and a.dateCr = b.dateCr)as AST ON Aitimata.id = AST.AitimaId 

중요한이 하위 쿼리

select a.* from AitimataStatus a join 
(select AitimaId, max(dateCr) AS dateCr 
from AitimataStatus 
group by AitimaId) b 
on a.AitimaId = b.AitimaId and a.dateCr = b.dateCr 

당신이 추가 정보를 필요로에게 무엇입니까?

from a in AitimataStatus 
let b = from as in AitimataStatus group by and other stuff and then select 
join b on a.** equals b.** 

답변

0

그것은이 같은 수 있습니다.

+0

나는 let에서이 작업을 수행 할 수 없습니다. 보다 명확한 예를 제시 할 수 있습니까? 감사 – xrklvs

0

여기 내 솔루션은

SELECT 
[Extent1].[id] AS [id], 
[Extent1].[dateCr] AS [dateCr], 
[Extent1].[UserId] AS [UserId], 
[Extent1].[AitimaId] AS [AitimaId], 
[Extent1].[StatusId] AS [StatusId] 
FROM [dbo].[AitimataStatus] AS [Extent1] 
INNER JOIN (SELECT 
    [Extent2].[AitimaId] AS [K1], 
    MAX([Extent2].[dateCr]) AS [A1] 
    FROM [dbo].[AitimataStatus] AS [Extent2] 
    GROUP BY [Extent2].[AitimaId]) AS [GroupBy1] ON (([Extent1].[AitimaId] = [GroupBy1].[K1]) OR (([Extent1].[AitimaId] IS NULL) AND ([GroupBy1].[K1] IS NULL))) AND (([Extent1].[dateCr] = [GroupBy1].[A1]) OR (([Extent1].[dateCr] IS NULL) AND ([GroupBy1].[A1] IS NULL))) 

을 생산

Dim sub1 = From aitst In context.AitimataStatus 
       Join aitst2 In (From aitst2 In context.AitimataStatus 
            Group aitst2 By cid = aitst2.AitimaId Into g = Group 
            Select New With {.AitimaId = cid, .dateCr = g.Max(Function(ddd) (ddd.dateCr))} 
            ) 
       On aitst2.AitimaId Equals aitst.AitimaId And aitst2.dateCr Equals aitst.dateCr 
       Select aitst 

:

감사