У меня несколько простой запрос в SQL, который я хотел бы преобразовать в Linq to Entities.
По сути, мне нужны все доступные курсы в базе данных, но я хочу получить последний результат теста для каждого курса для конкретного пользователя, если он прошел курс. Возможно, они проходили курс несколько раз, но я бы хотел получить только последний результат теста для каждого теста. Возможно ли это с помощью одного оператора Linq?
Вот SQL:
select c.courseid, c.Name, ca.result
from Course c
left join CourseAttempt ca
on c.CourseId = ca.CourseId
and ca.CourseAttemptId in
(
select max(courseattemptid)
from courseattempt
where userid=1234
group by courseid
)
Вот что у меня есть:
var stuff = (from c in context.Course
join ca in context.CourseAttempt.Where(a => a.userid == _userid)
on c.CourseId equals ca.Course.CourseId into jca
select new
{
courseId = c.CourseId,
name = c.Name,
result = jca.Select(a => a.result)
}).ToList();
Проблема в том, что результатом является массив всех результатов. Как мне получить только последний результат?