@using Groceries.Data @using Microsoft.EntityFrameworkCore @model TransactionItem? @inject AppDbContext dbContext @{ var items = await dbContext.Items .OrderBy(item => item.Brand) .ThenBy(item => item.Name) .GroupJoin( dbContext.ItemPurchases.Where(purchase => purchase.IsLastPurchase), item => item.Id, lastPurchase => lastPurchase.ItemId, (item, lastPurchase) => new { item, lastPurchase }) .SelectMany( group => group.lastPurchase.DefaultIfEmpty(), (group, lastPurchase) => new { group.item.Id, group.item.Brand, group.item.Name, Price = lastPurchase != null ? lastPurchase.Price : (decimal?)null, Quantity = lastPurchase != null ? lastPurchase.Quantity : (int?)null, }) .ToArrayAsync(); var selectedItem = items.SingleOrDefault(item => item.Id == Model?.ItemId); }