我正在尝试编写一个LINQ查询来维护一个独特的供应商列表
Order
- SupplierId
UniqueSupplierList
- Id
- SupplierId
实施例
Order
Supplier1
Supplier1
Supplier2
UniqueSupplierList
1, Supplier1
2, Supplier2
现在,如果我改变Order3,那么:
Order
Supplier1
Supplier1
Supplier1
我需要删除UniqueSupplierList,记录2,才能生成
UniqueSupplierList
1, Supplier1
这是我正在努力争取并需要帮助的删除。我意识到这个例子有点人为,但它是我感兴趣的删除LINQ示例。
表之间没有外键。
在SQL中,我可能会这样做:
delete from UniqueSupplierList where supplierid not in (Select SupplierId from Order where...)
一些LINQ代码开头:
db.UniqueSupplierList.Where(r.SupplierId!=????).ToList().ForEach(db.UniqueSupplierList.DeleteObject);
非常感谢提前。
答案 0 :(得分:1)
我假设您的数据库中还有一个Orders
集合。在这种情况下:
var supplierIDs = db.Orders.Select(o => o.SupplierID).Distinct();
var toDelete = db.UniqueSupplierList.Where(usl => !supplierIDs.Contains(usl.SupplierID)).ToList();
toDelete.ForEach(td => db.UniqueSupplierList.Remove(td));
db.SaveChanges();