#.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