У меня есть следующий оператор SQL, который я пытаюсь преобразовать в Linq:
SELECT a.lastname,a.firstname,a.program,a.[start],a.[end],
CASE WHEN a.[end] IS NULL AND a.[start] < c.lastStart THEN 1 ELSE 0 END as error,
CASE WHEN a.[end] IS NULL AND a.[start] = c.lastStart THEN 1 ELSE 0 END as loggedOn
FROM usagelog a
INNER JOIN (SELECT b.username,max(b.[start]) AS lastStart FROM usagelog b GROUP BY b.username) c
ON a.username = c.username
ORDER BY a.lastname, a.firstname,a.program,a.[start]
Результаты должны выглядеть следующим образом:
Результаты SQL
Пока у меня есть следующее:
var query = (from u in UsageLogs
orderby u.lastname,u.firstname,u.program.u.start
select new
{
lastname = u.lastname,
firstname = u.firstname,
program = u.program,
start = u.start,
end = u.end
})
Я застрял в том, как написать внутреннее соединение с помощью дополнительного оператора select и операторов 'CASE'.
Любая помощь будет оценена.