Как сделать запрос, так чтобы выборка проходила на стороне SQL сервера? - C#

Узнай цену своей работы

Формулировка задачи:

Помогите переделать запрос, так чтобы не грузились все данные:
Листинг программы
  1. IAsyncEnumerable<MessageInfo> message = _context.MessageInfos.Where(mes => !mes.IsLine)
  2. .Include(c => c.Coordinates)
  3. .Include(d => d.DateAddObject)
  4. .ToAsyncEnumerable()
  5. .Where(d => d.DateAddObject.Date.Date == dateTime.Date);
Но как эту часть: .ToAsyncEnumerable().Where... переделать в запрос SQL? Если сделаю так, то будет ошибка:
Листинг программы
  1. IQueryable<MessageInfo> message = _context.MessageInfos.Where(mes => !mes.IsLine)
  2. .Include(c => c.Coordinates)
  3. .Include(d => d.DateAddObject)
  4. .Where(d => d.DateAddObject.Date.Date == dateTime.Date);
  5. if (message != null)
  6. {
  7. List<HomeIndexViewModel> homeIndexViewModel = new List<HomeIndexViewModel>();
  8. await (message
  9. .AsNoTracking())
  10. .ForEachAsync(mes =>
  11. {
  12. if (mes != null)
  13. homeIndexViewModel.Add(new HomeIndexViewModel
  14. {
  15. MarkerMessageId = mes.MessageInfoId,
  16. Latitude = mes.Coordinates.First().Latitude,
  17. Longitude = mes.Coordinates.First().Longitude,
  18. Title = mes.Title
  19. });
  20. });
  21. return Json(homeIndexViewModel);
  22. }
Листинг программы
  1. if (_context != null && DateTime.TryParse(date, out DateTime dateTime))
  2. {
  3. IAsyncEnumerable<MessageInfo> message = _context.MessageInfos.Where(mes => !mes.IsLine)
  4. .Include(c => c.Coordinates)
  5. .Include(d => d.DateAddObject)
  6. .ToAsyncEnumerable()
  7. .Where(d => d.DateAddObject.Date.Date == dateTime.Date);
  8. if (message != null)
  9. {
  10. List<HomeIndexViewModel> homeIndexViewModel = new List<HomeIndexViewModel>();
  11. await (message)
  12. .ForEachAsync(mes =>
  13. {
  14. if (mes != null)
  15. homeIndexViewModel.Add(new HomeIndexViewModel
  16. {
  17. MarkerMessageId = mes.MessageInfoId,
  18. Latitude = mes.Coordinates.First().Latitude,
  19. Longitude = mes.Coordinates.First().Longitude,
  20. Title = mes.Title
  21. });
  22. });
  23. return Json(homeIndexViewModel);
  24. }
  25. }

Решение задачи: «Как сделать запрос, так чтобы выборка проходила на стороне SQL сервера?»

textual
Листинг программы
  1. DateTime? begin = beginDate;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы