Uwakpeter Ответов: 1

Как преобразовать инструкцию SQL server в инструкцию linq


SELECT [t1].[TimelineEndDate], [t0].[DateRecieved], [t2].[ConceptName],[t4].MaxTimeLimit
FROM [QualityAssuranceTesting] AS [t0]
LEFT JOIN [ImplementationTimeline] AS [t1] ON [t0].[RequestId] = [t1].[RequestId]
LEFT JOIN [PIP_Concept] AS [t2] ON [t0].[RequestId] = [t2].[RequestId]
LEFT JOIN [ActionHistoryInfo] AS [t3] ON [t2].[RequestId] = [t3].[RequestId]
LEFT JOIN [SlaCategory] AS [t4] ON [t4].SlaLevel = 'Implementation'
Left JOIN [ActionHistoryInfo] AS [t5] ON [t5].ActionTimeStamp BETWEEN '2017-11-06' AND '2017-09-06'


Что я уже пробовал:

from q in QualityAssuranceTestings 
join i in ImplementationTimelines
.where(imple=>imple.RequestId == p.RequestId).DefaultIfEmpty()
join c in PIP_Concepts
.where(concept=>concept.RequestId == i.RequestId).DefaultIfEmpty()
join a in ActionHistoryInfo
.where(action=>action.RequestId == i.RequestId).DefaultIfEmpty()
join s in SlaCategories.where(x=>x.Slalevel == "Implementation") into 
where a.ActionTimeStamp <=new DateTime(2017,09,06) && a.ActionTimeStamp>= new DateTime(2017,11,06)
select new
{
i.TimelineEndDate,
q.DateRecieved,
c.ConceptName,
}

1 Ответов

Рейтинг:
2

an0ther1

Не настоящий ответ, но... есть инструмент под названием Линкер[^] который может конвертировать из SQL в Linq - вы можете получить пробную версию, которая избавит вас от вашей непосредственной проблемы.

Я обнаружил, что Linq иногда очень расстраивает, некоторые функции SQL, такие как DateDiff, просто не поддерживаются или чрезвычайно проблематичны для реализации. Когда я сталкиваюсь с этими проблемами в MVC, то возвращаюсь к прямому SQL - ссылке Необработанные SQL-запросы Entity Framework[^]

с уважением