2015-09-29 2 views
-3

Я довольно новичок в LINQ в C#. Как я могу переписать следующий синтаксис запроса?C# Метод Синтаксис для запроса Синтаксис

var jobs = 
      context.Job 
      .Include(j => j.PlannedJobStopDetails 
       .Select(jsd => jsd.PlannedTravelStop) 
      ) 
      .Where(
       j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
        j.PlannedJobStopDetails.Any(
        jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
         && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
        ) 
      ); 

Я использую Entity Framework и я пытаюсь выполнить запрос в LINQPad

+3

Для некоторых из этого вы не можете. Почему вы хотите? – Rawling

+0

Что-то вроде 'from j in context.Job.Include (...) где ... select j'? Что вы пробовали? – CodeCaster

+0

@Rawling Я хочу запустить запрос в LINQPad –

ответ

1

Установка языка для отчетности C#, а затем использовать jobs.Dump(); получить результаты?

var jobs = 
     context.Job 
     .Include(j => j.PlannedJobStopDetails 
      .Select(jsd => jsd.PlannedTravelStop) 
     ) 
     .Where(
      j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
       j.PlannedJobStopDetails.Any(
       jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
        && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
       ) 
     ); 
jobs.Dump(); // execute the query in linqpad and dump results. 

Дополнительная информация добавлена ​​

Весь код вы пишете в LINQPad получите содержится в классе под названием UserQuery. Кроме того, все таблицы/представления, доступные из выбранного вами соединения, будут доступны в этом сгенерированном классе UserQuery.

Использование context. в действительности не требуется. Но поскольку вы использовали копию для копирования из своего фактического приложения C#, вы можете использовать следующий трюк, чтобы просто запустить вставленный запрос.

Вы добавить следующий код перед запросом в LINQPad:

var context = this; 

Альтернативой запроса будет возвращать вариант языка в LINQPad для выраженияC# и просто написать запрос без context и .Dump(); в конце. Как это ...

Job 
.Include(
    j => j.PlannedJobStopDetails.Select(jsd => jsd.PlannedTravelStop) 
) 
.Where(
    j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
     j.PlannedJobStopDetails.Any(
      jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
       && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
     ) 
) 
+0

Он дает ошибку «Контекст« name »не существует в текущем контексте» –

+0

Добавлена ​​дополнительная информация для вас относительно LinqPad. – Dbuggy

Смежные вопросы