所以我在我的数据库中有这个:
CommodityCategories
-------------------
CommodityCategoryID (PK)
Name
Commodities
-------------------
CommodityID (PK)
CommodityCategoryID (FK)
Name
VendorsCommodities
-------------------
VendorID (PK, FK)
CommodityID (PK, FK)
Vendors
-------------------
VendorID
Name
基本上,商品有商品类别,供应商有多种商品。
我想显示每个商品类别的名称,并在下方显示具有与该商品类别相关的商品的每个供应商的名称。这就是我所拥有的:
@foreach (var commodityCategory in Model.CommodityCategories)
{
<h3><a href="#">@commodityCategory.Name</a></h3>
<div>
@foreach (var vendor in Model.Vendors)
{
<span>@vendor.Name</span>
}
</div>
}
我需要按照我正在循环的当前商品类别过滤Model.Vendors
。我尝试了Model.Vendors.Where(v => v.Commodities.CommodityCategories.Contains(commodityCategory))
,但CommodityCategories
不是v.Commodities
的属性。
我有什么方法可以这样做吗?
答案 0 :(得分:1)
这可行:
Model.Vendors.Where(v => v.Commodities.Any(c => c.CommodityCategory.Id ==
commodityCategory.Id))
答案 1 :(得分:1)
我重新创建了你的数据库架构,这对我有用......
@foreach (var catagory in Model)
{
<h3><a href="#">@catagory.Name</a></h3>
if (catagory.Commodities.Any(commodity => commodity.Vendors.Count > 0))
{
<div>
@foreach (var vendor in catagory.Commodities.SelectMany(c => c.Vendors).Distinct())
{
<span>@vendor.Name</span><br />
}
</div>
}
}