请一些删除LINQ表达式的帮助

时间:2013-11-26 19:31:39

标签: linq entity-framework linq-to-entities

我正在尝试编写一个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);

非常感谢提前。

1 个答案:

答案 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();