Я выполняю запрос linq для получения некоторых данных из БД.
Вот мой linq:
var requests = (from job in db.JobRequest
join jobCode in db.Job on job.JobCode equals jobCode.PkJobCode
join jobParams in db.JobRequestParameter on job.PkJobRequestId equals jobParams.FkJobRequestId into jobRequestParameters
from jobParams in jobRequestParameters.DefaultIfEmpty()
select new Objects.JobRequest.JobRequest()
{
JobRequestId = job.PkJobRequestId,
JobType = job.FkJobType,
JobCode = job.JobCode,
Schedule = job.Schedule.AddMilliseconds(-job.Schedule.Millisecond),
IsRunning = job.Running,
Description = jobCode.BriefDescription,
HasParams = ???
}).ToList();
Основные две таблицы, которые меня интересуют, это JobRequest и JobRequestParameters ...
JobRequest таблица содержит 13 записей (но не все задания имеют параметры).
JobRequestParameters таблица содержит только 4 записи. К ним присоединяется PkJobRequestId . JobRequestParameters имеет pkJobParameterId IF и только ЕСЛИ * PkJobRequestID из JobRequest таблицы имеет параметры ..
Как можно Я модифицирую этот запрос linq, чтобы он был похож на SQL, который я написал ниже. Я хотел бы иметь возможность заполнить HasParams со значением true, если pkJobParameterId существует, и 1, если нет. Ниже мое SQL
SELECT
job.pkJobRequestId,
jobParams.pkJobParameterId,
(CASE
WHEN jobParams.pkJobParameterId IS NULL THEN 1
ELSE 0
END) AS HasParams
FROM
Job.JobRequest job INNER JOIN
Reference.Job jobCode ON job.JobCode = jobCode.pkJobCode LEFT OUTER JOIN
job.JobRequestParameter jobParams ON job.pkJobRequestId = jobParams.fkJobRequestId
редактирование: я пробовал это, но мой синтаксис далеко.
requests = (from job in db.JobRequest
join jobCode in db.Job on job.JobCode equals jobCode.PkJobCode
join jobParams in db.JobRequestParameter on job.PkJobRequestId equals jobParams.FkJobRequestId into jobRequestParameters
from jobParams in jobRequestParameters.DefaultIfEmpty()
select new { pkJobRequestId = job, pkJobParameterId = jobParams == null ? false : true} as blahblah
select new Objects.JobRequest.JobRequest()
{
JobRequestId = job.PkJobRequestId,
JobType = job.FkJobType,
JobCode = job.JobCode,
Schedule = job.Schedule.AddMilliseconds(-job.Schedule.Millisecond),
IsRunning = job.Running,
Description = jobCode.BriefDescription,
HasParameters = blahblah.PkJobParameterId == null ? true : false
}).ToList();