Конвертировать необработанный запрос SQL в Linq - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть 3 таблицы (действия, участники и зачисления), и я хочу знать количество действий, в которых участвовал каждый участник. Я новичок в написании запроса SQL Linq, помогите мне преобразовать приведенный ниже запрос в Linq.

Select count(Activities.ActivityId) AS NO_Activities,Activities.ActivityId,Enrollments.PostTestScore1
from Participants,Activities,Enrollments
where Participants.ParticipantId=Enrollments.ParticipantId
    and Activities.ActivityId=Enrollments.ActivityId
    and Enrollments.ParticipantId= 2883
    Group By Enrollments.PostTestScore1,Activities.ActivityId;

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Я нашел ответ, используя лямбда-запрос, как показано ниже.

var no_ctivities = db.Activities
               .Join(
                   db.Enrollments,
                   ac => ac.ActivityId,
                   en => en.ActivityId,
                   (enr, act) => new { en = enr, ac = act })
               .Join(
                   db.Participants.Where(pr => pr.ParticipantId == id),
                   en => en.ac.ParticipantId,
                   prt => prt.ParticipantId,
                   (enr, prt) => new { enr.ac.PostTestScore1, enr.ac.PostTestScore2, enr.ac.ActivityId, enr.ac.AttendFirstday, enr.ac.AttendSecondDay })
               .Select(c => new
               {
                   c.ActivityId,
                   c.PostTestScore1,
                   c.PostTestScore2,
                   c.AttendFirstday,
                   c.AttendSecondDay
               }).count();
0 голосов
/ 23 сентября 2018
var query = from a1 in Activities
            join e1 in Enrollments on a1.ActivityId equals e1.ActivityId
            join p1 in Participants on e1.ParticipantId equals p1.ParticipantId
            where e1.ParticipantId= 2883
            group new { e1, a1 }
            by new { e1.PostTestScore1, a1.ActivityId } into g
            select new
            {
                 ActivityId = g.Key.ActivityId,
                 PostTestScore1 = g.Key.PostTestScore1,
                 NO_Activities = g.Count()
            };
...