Как мне получить этот sql для linq? Несколько групп - PullRequest
0 голосов
/ 08 апреля 2010

Для ДБ, LINQ может быть разочаровывающим. Мне нужно преобразовать следующий SQL в Linq.

SELECT COUNT(o.objectiveid), COUNT(distinct r.ReviewId), l.Abbreviation
FROM Objective o
JOIN Review r
    on r.ReviewId = o.ReviewId
    and r.ReviewPeriodId = 3
    and r.IsDeleted = 0
JOIN Position p
    on p.PositionId = r.EmployeePositionId
    and p.DivisionId = 2
JOIN Location l
    on l.LocationId = p.LocationId      
GROUP BY l.Abbreviation     

Группу по вложенному примеру , возможно, я и выберу, но не уверен. Делая одну группу, я использовал следующий код:

var query = from rev in db.Reviews
                              .Where(r => r.IsDeleted == false && r.ReviewPeriodId == reviewPeriodId)
                from obj in db.Objectives
                              .Where(o => o.ReviewId == rev.ReviewId && o.IsDeleted == false)
                from pos in db.Positions
                              .Where(p => rev.EmployeePositionId == p.PositionId && p.IsDeleted == false && p.DivisionId == divisionId )
                from loc in db.Locations
                              .Where(l => pos.LocationId == l.LocationId)
                group loc by loc.Abbreviation into locgroup

                select new ReportResults
               {
                 KeyId = 0,
                 Description = locgroup.Key,
                 Count = locgroup.Count()
               };

    return query.ToList();

Какой правильный путь?

Спасибо

1 Ответ

1 голос
/ 08 апреля 2010

Я знаю, что вы спрашиваете о конкретном, но есть несколько инструментов, которые вы могли бы использовать для изучения SQL в LINQ. Проверьте их и посмотрите, помогут ли они! Запустите ваш SQL-запрос через первый инструмент и посмотрите, что получится.

Преобразование SQL в LINQ

LINQPad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...