Перенос Sql — запроса, который находит среднее значение на .Запрос Net Entity Framework

#.net #entity-framework #.net-core

Вопрос:

Я пытаюсь преобразовать этот Sql — запрос в a .Запрос Net Entity Framework. Я раньше не имел дела с усреднением, группированием и преобразованием в запросе Entity Framework. Вот как выглядит мой текущий Sql-запрос:

 select AVG(datediff(SECOND, starttime, endtime)) as AverageTime 
from warehousepackingoperation 
WHERE packingId = @packingId 
    AND starttime IS NOT NULL 
    AND userid=@userid 
group by 
 Convert(date, starttime) 
order by Convert(date, starttime)
 

Это то, что у меня есть до сих пор:

   dbContext.WarehousePackingOperation
      .Where(x => x.PackingId == e.ThePackingId 
          amp;amp; x.StartTime != null 
          amp;amp; x.UserId == userId)
 

Я не уверен, где разместить «СРЕДНЕЕ значение(дата(ВТОРАЯ, время начала, время окончания)) как среднее время», а также группу по части инструкции. Заранее спасибо.

Комментарии:

1. Исходный запрос был бы быстрее и проще, если бы вы добавили индексированное date типизированное поле, содержащее дату операции. Convert(date, starttime) возможно, не удастся выполнить полное сканирование таблицы, но сервер все равно не сможет использовать статистику для расчета хорошего плана выполнения. Это не дублирующая информация. Когда речь идет о днях, вопросы, связанные со временем, такие как часы, часовые пояса и летнее время, не имеют никакого значения. Это также облегчило бы написание основного запроса EF