0
我有兩個表格 - 產品和SKU,相關的一對多。獲取fk相關實體在id列表中不包含id的實體列表
我有第三個表,租金,其中包含已出租的sku ids。
產品有許多相關的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);
和不可用的SKU列表...
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不在租賃的產品。我已經嘗試了幾個變體...
var productlistresult = productskus.Except(rentedskus).ToList();
p = p.Where(i => i.productlistresult.Contains(product.skus(n => n.skuid));
感謝克里斯。產品表沒有skuid。我只能通過sku表獲得skuid ... – tintyethan
好的,那麼你只需要做一些像'i.skus.Any(s => productlistresult.Contains(s.skuid))''。 –
完美 - 謝謝。 p = p.Where(i => i.sku.Any(s => productlistresult.Contains(s.skuid))); – tintyethan