C# ASP.NET核心2.2-简单数据库查询问题

C# ASP.NET核心2.2-简单数据库查询问题,c#,asp.net-core,asp.net-core-mvc,asp.net-core-2.2,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.2,试图在数据库中查询特定记录时,模型中的此记录具有与其关联的ICollection。下面是一个例子: 让我们假设一家有很多商店: class StoreLocation { public int StoreId public string LocationName public ICollection<SaleItems> SaleItems } class SaleItems { public int SaleItemId public st

试图在数据库中查询特定记录时,模型中的此记录具有与其关联的ICollection。下面是一个例子:

让我们假设一家有很多商店:

class StoreLocation {
    public int StoreId
    public string LocationName
    public ICollection<SaleItems> SaleItems
}

class SaleItems {
    public int SaleItemId
    public string ItemName
    public string ItemCost
}

..不知道该怎么办,或者可能我一开始就走错了方向。

您可以通过
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 saleItems = await _context.SaleItems
    .Where(x => x.ItemCost < 5 && x.StoreLocationId == storeId).ToListAsync();
var saleItems=wait\u context.saleItems
.Where(x=>x.ItemCost<5&&x.StoreLocationId==storeId).toListSync();

您可以通过
StoreLocation
执行此操作,但效率低下,因为您必须查询出所有
SaleItem
s,然后在内存中过滤它们:

var store = await _context.StoreLocations.Include(x => x.SaleItems)
    .SingleOrDefaultAsync(x => x.StoreId == storeId);
var saleItems = store.SaleItems.Where(x => x.ItemCost < 5);
然后,您可以简单地执行以下操作:

var saleItems = await _context.SaleItems
    .Where(x => x.ItemCost < 5 && x.StoreLocationId == storeId).ToListAsync();
var saleItems=wait\u context.saleItems
.Where(x=>x.ItemCost<5&&x.StoreLocationId==storeId).toListSync();
var saleItems = await _context.SaleItems
    .Where(x => x.ItemCost < 5 && x.StoreLocationId == storeId).ToListAsync();