【发布时间】:2015-10-05 15:50:25
【问题描述】:
我有两张表 - 产品和 SKU,一对多相关。
我有第三个表,rental,其中包含已租用的 sku id。
产品有许多相关的 SKU - 例如,产品 1 可能有 sku 1、2 和 3。
客户按 SKU 租用产品。所以 SKU 1 可能没有库存,但库存中还有 2 个 SKU,这意味着该产品仍然有货。
如果所有 3 个 SKU 都已租用(在租用表中),则该产品不可用。
我需要查询库存中剩余 SKU 的产品的上下文。
我试图通过获取产品列表、不可用 SKU 列表并返回 SKU 不在不可用 SKU 列表中的那些产品来做到这一点。
我有一个 iQueryable 的产品...
IQueryable<products> p = (from r in db.products from pc in r.productcategories
where pc.categories.categoryname == n select r)
.OrderByDescending(s => s.productname).Take(18);
以及不可用的 skus 列表...
List<int> rentedskus = new List<int>();
rental = rental.Where(t => sd < t.enddate && t.startdate < ed);
foreach (var r in rental)
{
rentedskus.Add(r.skuid);
}
这里有些马虎,但我从产品列表中获得了产品 sku 的列表...
List<products> plist = p.ToList();
List<int> productskus = new List<int>();
foreach(var pr in plist)
{
foreach(var sk in pr.sku)
{
productskus.Add(sk.skuid);
}
}
现在,假设这是实现目标的可接受方式,我只需要选择相关 SKU 不在rentedskus 中的那些产品。我尝试了几种不同的...
var productlistresult = productskus.Except(rentedskus).ToList();
p = p.Where(i => i.productlistresult.Contains(product.skus(n => n.skuid));
【问题讨论】:
标签: c# asp.net-mvc entity-framework linq