Как преобразовать этот запрос T-SQL в лямбда или синтаксис запроса в C # - PullRequest
0 голосов
/ 27 апреля 2019

Я новичок в Entity Framework в C #.Я пытаюсь преобразовать этот оператор SQL в лямбда-выражение или синтаксис запроса, но я не могу понять, как именно это сделать.

Вот запрос SQL:

SELECT
    a.Id, a.IndustryName, 
    COUNT(b.ProcessJobPostNumId) AS IndustryCount 
FROM
    ERECRUITDEV.dbo.Industries a
LEFT JOIN
    (SELECT 
         b.IndustryID, b.Id AS JobPostId, d.MdaId, c.ParishID, 
         c.EmploymentType, c.Id AS JobPostNumId, 
         d.Id AS ProcessJobPostNumId, e.AvailableInternal  
     FROM 
         ERECRUITDEV.dbo.JobPost b
     LEFT JOIN
         ERECRUITDEV.dbo.JobPostNumber c ON c.JobPostId = b.id
     LEFT JOIN
         ERECRUITDEV.dbo.ProcessJobPostNum d ON d.JobPostNumId = c.Id
     LEFT JOIN
         ERECRUITDEV.dbo.RecruitmentProcess e ON e.id = d.RecruitProcessId 
     WHERE
         AvailableInternal = 1) b ON b.IndustryID = a.Id
GROUP BY 
    a.Id, a.IndustryName

1 Ответ

0 голосов
/ 28 апреля 2019

Поскольку вы сообщили, что все объекты сущностей содержат свойство навигации для каждого соединения, которое вы делаете в запросе, который вы предоставляете, то лямбда-выражение ниже должно работать как шарм;

var result = context.Industries.Select(i => new {
    i.Id,
    i.IndustryName,
    IndustryCount = i.JobPosts
        .Where(jp => jp.JobPostNumbers
            .Any(jpn => jpn.ProcessJobPostNums
                .Any(pjpn => pjpn.RecruitmentProcess
                    .Any(rp => rp.AvailableInternal == 1))))
        .SelectMany(jp => jp.ProcessJobPostNums
            .SelectMany(jpn => jpn.ProcessJobPostNums
                .Select(pjpn => pjpn.Id)))
        .Count()
}).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...