Как я могу получить один ответ, используя linq - PullRequest
0 голосов
/ 18 марта 2020

У меня есть следующий API-код для получения одного результата ответа, но я получаю ошибку json. net с жалобами, когда я удаляю эту строку var Product = prdList .FirstOrDefault(a => a.ID == productID); и return Json(prdList);, она работает нормально, но возвращает каждую строку в таблице. Как я могу получить одну запись?

Вот код

[HttpGet("{productID}")]
        public async Task<IActionResult> Getproduct(int productID)
        {
            var prdList = (await rpsService.Getrps(productID)).ToList();
            var Product = prdList .FirstOrDefault(a => a.ID == productID);
            return Json(Product);

        }

Вот ошибка, которую я получаю, я получаю нужную информацию, но я получаю ошибку при загрузке страницы

JsonSerializationException: Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generi c .IList`1 Имя проекта', так как тип для правильной десериализации требуется массив JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените массив JSON на JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы он был нормальным. NET тип (например, не примитивный тип, например, целое число а не тип коллекции, такой как массив или список), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы принудительно десериализовать его из объекта JSON. Путь 'productID', строка 1, позиция 13.

Я пытался работать нормально, но отображать все строки

     [HttpGet("{productID}")]
        public async Task<IActionResult> GetProduct(int productID)
        {
            var prdList = (await rpsService.Getrps(productID)).ToList();
           return Json(prdList );

        }

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Вы можете напрямую применить условие при получении списка, как указано ниже.

 var prdList = (await rpsService.Getrps(productID)).ToList().FirstOrDefault();
0 голосов
/ 18 марта 2020

Попробуйте это

  var Product = prdList.Where(a => a.ID == productID).FirstOrDefault();

или

var prdList = (await rpsService.Getrps(productID)).ToList().FirstOrDefault();
           return Json(prdList);
...