Веб-API дает в ответ null

Я разработал web api, который принимает два параметра даты и времени (начало и конец), а затем должен выдавать отдельные записи.

public HttpResponseMessage GetMeterPing(DateTime start, DateTime end)
    {
        try
        {


            var startDateTime = start;
            var endDateTime = end;

            var result = medEntitites.tj_xhqd.Where(m => m.sjsj >= startDateTime && m.sjsj <= endDateTime)
                                             .OrderByDescending(o => o.sjsj)
                                             .Select(s => new { s.zdjh, s.sjsj, s.xhqd })
                                             .Distinct()
                                             .FirstOrDefault();                                             


            return Request.CreateResponse(HttpStatusCode.OK, new { data = result });


        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
        }
    }

URL-адрес API:http://localhost:14909/api/meters/GetMeterPing/2018-04-28T00:00:00/2018-04-27T23:59:59

Когда я запускаю этот web-api, он дает мне

{"data":null}

Также при отладке result также является null

Любая помощь будет высоко оценен

Возникает очевидный вопрос, но в какой вселенной 2018-04-28T00:00:00 раньше 2018-04-27T23:59:59? Или, точнее, как свидание может удовлетворять обоим этим условиям: >= 2018-04-28 и <= 2018-04-27T23:59:59?

Llama 02.05.2018 05:50

... Я не смотрел на порядок дат. Это определенно будет основной причиной того, почему запрос Linq не возвращает результатов.

K. Alan Bates 02.05.2018 05:55

@john Я отвечу на этот вопрос еще раз. Может показаться, что это связано с довольно простой опечаткой, но у него есть достаточно ясное объяснение, и я не думаю, что это плохой вопрос. По крайней мере, это может служить примером того, как вы должны быть осторожны при создании таких сервисов. Поскольку указанные даты были бессмысленны для службы, код выиграет от выдачи BadRequest, если даты перевернуты. (Для некоторых API даты, отправленные точно так же, будут выражать "Not In")

K. Alan Bates 02.05.2018 05:59

@Alan Нет, и я не отрицал его, но его стоит закрыть, потому что это типографская ошибка, а не проблема с кодом (я также поддержал ваш ответ, потому что простая проверка предотвратила бы эту проблему).

Llama 02.05.2018 06:01

@john ... нет ничего важнее. Просто это всего лишь опечатка в том футляре, который он задумал. Переворачивание дат - это способ поддержки функции «Дата вне диапазона» в API, поэтому необходима дополнительная проверка, чтобы добавить выразительности его усиленному значению, а не просто опечатку.

K. Alan Bates 02.05.2018 06:06

@ Алан, я понимаю твою точку зрения. Я отзову свой закрытый голос.

Llama 02.05.2018 06:07

Да, я сделал опечатку. Но спасибо за поддержку

Moeez 02.05.2018 06:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
571
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше описание вашей проблемы звучит так, будто выполняемый вами запрос Linq не возвращает никаких результатов, поэтому ваш вызов FirstOrDefault является дефолтным, то есть возвращает null. Затем вы не выполняете никаких дополнительных проверок и отвечаете результатом этой строки, установленным как значение анонимной проекции, имеющей свойство data.

Другие вопросы по теме