Вы можете сделать это через StoreLocation
, но это будет неэффективно, так как вам придется запросить все SaleItem
с и затем отфильтровать их в памяти:
var store = await _context.StoreLocations.Include(x => x.SaleItems)
.SingleOrDefaultAsync(x => x.StoreId == storeId);
var saleItems = store.SaleItems.Where(x => x.ItemCost < 5);
В качестве альтернативы, и лучше, вы можете явно загружать только те товары, которые вам нужны, но вам все равно придется сначала запросить магазин, что означает один ненужный запрос:
var store = await_context.StoreLocations.FindAsync(storeId);
var saleItems = await _context.Entry(store)
.Collection(x => x.SaleItems).Query()
.Where(x => x.ItemCost < 5).ToListAsync();
Наилучшим подходом было бы использование свойства внешнего ключа для вашей SaleItem
сущности:
[ForeignKey(nameof(StoreLocation))]
public int StoreLocationId { get; set; }
public StoreLocation StoreLocation { get; set; }
Тогда вы можете просто сделать:
var saleItems = await _context.SaleItems
.Where(x => x.ItemCost < 5 && x.StoreLocationId == storeId).ToListAsync();