Я работаю над созданием интернет-магазина и предоставляю администраторам возможность просматривать данные в диаграмме с помощью ChartJs, ASP.NET Core Razor Pages для просмотра.Чтобы показать данные с помощью графика, я использую jQuery для изменения данных с графика без обновления страницы, поэтому мне нужно, чтобы данные уже загружались, когда пользователь находится на странице.
Сейчас я застрялв той части, где я получаю свой список ключей в массив.Я получаю все данные из моей таблицы «Ключ» со столбцом DateTime, отформатированным как «19-12-2018 18:46:34» (день-месяц-год-часы-минуты-секунды) и из 8 других столбцов, не имеющих отношенияна DateTime
Что я хочу получить: для 2016–2019 годов дни каждого месяца Ниже приведен пример кода, который работает для указанного года и месяца
Я использую страницы Razor с MVVM-pattern
Это с моей страницы с выделенным кодом, где я загружаю данные, которые я буду использовать для просмотра этой страницы для Chart.js.
public List<Key>[] AllOrdersDays { get; set; }
AllOrdersDays = new List<Key>[31];
for (int day = 0; day < 32; day++)
{
AllOrdersDays[day] = (from key in _context.Key
where key.OrderDate.Year == 2018 && key.OrderDate.Month == 12 && key.OrderDate.Day == day
select key).ToList();
}
Это отлично работает, но я не хочуписать это снова и снова за каждый месяц, начиная с 2016 года и до 2019 года
public List<Key>[] AllOrdersDays { get; set; }
public async Task OnGetAsync()
{
AllOrdersDays = new List<Key>[10000];
for (int year = 2016; year < 2019; year++)
{
for (int month = 1; month < 12; month++)
{
for (int day = 0; day < 32; day++)
{
AllOrdersDays[day] = (from key in _context.Key
where key.OrderDate.Year == year && key.OrderDate.Month == month && key.OrderDate.Day == day+1
select key).ToList();
}
}
}
}
Это всего лишь фрагмент из моей страницы, где я оставил всю ненужную информацию.OnGetAsync () вызывается, когда пользователь переходит на страницу.new List [10000] 10000 - это просто значение, потому что его нужно было заполнить в массиве для инициации.
В результате я получаю, что первые 31 запись получат правильное значение, но после того, как будет выброшено исключение NullReferenceExceptionчто я понимаю, потому что «день» во вложенном цикле for никогда не превысит 31, поэтому массив может заполнять данные только за 1 месяц.
То, что я хотел бы знать, - это способ заставить эту работу работать.,Возможно, это не самое элегантное решение, но я не хочу жестко кодировать свои проблемы.