У меня есть таблица базы данных с серией уведомлений. Для одного города, xgrid и ygrid может быть несколько уведомлений. Итак, я получаю последнюю дату и использую эту запись с помощью запроса SQL Lite.
Прочитав несколько статей на этом сайте, я попытался собрать воедино запрос модели, эквивалентный запросу SQL Lite ниже.
Проблема в том, что запрос модели не содержит ошибок компиляции, но результаты равны нулю.
SQL Lite Query
select * from (
select
NOTIFY_ID,
NOTIFICATION_DATE,
CITY_NAME,
ITEM_X_GRID,
ITEM_Y_GRID,
GRID_QUANTITY,
row_number() over(partition by ITEM_X_GRID, ITEM_Y_GRID, CITY_NAME order by NOTIFICATION_DATE desc) as rn
from
USER_ILLY_DATA
) t
where t.rn = 1
order by CITY_NAME
Class & List
public class MostRecentNotify
{
public int RecordID { get; set; }
public string ItemXGrid { get; set; }
public string ItemYGrid { get; set; }
public string GridQuantity { get; set; }
public string NotificationDate { get; set; }
public string CityName { get; set; }
public string IllyItemCode { get; set; }
}
public IList<MostRecentNotify> RecentNotifies { get; set; }
Запрос модели для получения последней записи (не работает)
var tempResults = _context.IllyAPIData.GroupBy(i => new { i.ItemXGrid, i.ItemYGrid, i.CityName})
.Select(g => g.OrderByDescending(y => y.NotificationDate).FirstOrDefault());
Запрос модели для передачи значений в класс для вызова в Razor Pages
var RecentNotifies = tempResults.Select(r => new MostRecentNotify//).ToListAsync();
{
ItemXGrid = r.ItemXGrid,
ItemYGrid = r.ItemYGrid,
GridQuantity = r.GridQuantity,
NotificationDate = r.NotificationDate,
CityName = r.CityName,
IllyItemCode = r.IllyriadCode,
RecordID = r.RecordID,
}).ToListAsync();
Фрагмент Razor Pages
@foreach (var item in Model.RecentNotifies.Where(i => i.CityName == city.DistinctCityName)){
@foreach (var indRes in Model.RareResources.Where(r => r.ResourceCode == item.IllyItemCode)){
Ошибка при загрузке страницы
ArgumentNullException: Value cannot be null. (Parameter 'source')
System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
System.Linq.Enumerable.Where<TSource>(IEnumerable<TSource> source, Func<TSource, bool> predicate)
IllyriadAssist.Pages.harvestableInventory.Pages_harvestableInventory_Index.ExecuteAsync() in Index.cshtml
+ @foreach (var item in Model.RecentNotifies.Where(i => i.CityName == city.DistinctCityName)){
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)