Как исправить метод get, который выбирает заказы клиентов, сгруппированные по почтовому индексу в C # - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь позвонить своей конечной точке, которая должна вернуть сгруппированный результат, основанный на получении заказов, сгруппированных по почтовому индексу, отфильтрованному в порядке убывания по итогу.Итого - это количество заказов для каждого из почтовых индексов.

Структура базы данных: Клиенты, Заказы, Серверы, и существует связь один-ко-многим между клиентом и заказами, например, один клиент может иметь много заказов.

Мой текущий код возвращает ошибку:

System.NullReferenceException : 'Ссылка на объект не установлена ​​на экземпляр объекта.'

Вот мой код c #:

/// <summary>
/// Get all orders grouped by postcode.
/// </summary>
/// <returns>The orders.</returns>
[HttpGet("ByPostcode")]
public IActionResult ByPostcode()
{
    //Filter orders.
    var orders = _context.Orders.Include(order => order.Customer).ToList();

    //Group by postcode. 
    //Descending list of postcodes and total number of orders for each of those postcodes.
    var groupedResult = orders.GroupBy(order => order.Customer.PostCode)
        .ToList()
        .Select(group => new
        {
            PostCode = group.Key,
            Total = group.Sum(x => x.Total)
        }).OrderByDescending(result => result.Total)
        .ToList();

    return Ok(groupedResult);
}

Ожидаемым результатом должен быть список заказов, сгруппированных по почтовому индексу с общей суммой заказов по почтовому индексу, например:

[
  {
    "postcode": "A",
    "total": 10
  },
  {
    "postcode": "AWE",
    "total": 23423
  },
  {
    "postcode": "TRR",
    "total": 453
  },
]

Фактический результат: System.NullReferenceException: 'Ссылка на объект не установлена ​​для экземпляра объекта.' .

MyProject.Models.Order.Customer.get вернула ноль.

Customers table

Orders table

1 Ответ

0 голосов
/ 06 июня 2019

Я нашел проблему. Это было потому, что у меня были заказы с customerId, равным NULL, и Total, равным 0, и я не обрабатывал его. Исправлено сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...