Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请帮我删除LINQ表达式_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

请帮我删除LINQ表达式

请帮我删除LINQ表达式,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,我试图编写一个LINQ查询来维护一个不同的供应商列表 Order - SupplierId UniqueSupplierList - Id - SupplierId 范例 Order Supplier1 Supplier1 Supplier2 UniqueSupplierList 1, Supplier1 2, Supplier2 现在,如果我更改订单3,以便: Order Supplier1 Supplier1 Suppli

我试图编写一个LINQ查询来维护一个不同的供应商列表

Order
  - SupplierId


UniqueSupplierList
  - Id
  - SupplierId
范例

Order
   Supplier1
   Supplier1
   Supplier2

UniqueSupplierList
   1, Supplier1
   2, Supplier2
现在,如果我更改订单3,以便:

Order
   Supplier1
   Supplier1
   Supplier1
我需要删除UniqueSupplierList,记录2,以生成

UniqueSupplierList
   1, Supplier1
这是我正在努力解决的删除问题,需要帮助。我意识到这个示例有点做作,但我感兴趣的是delete 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);

非常感谢。

我假设您的数据库中也有一个
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();

刚刚实现了这个,效果很好。我想我是想把每件事都做到一行!!但谢谢你,真的很感激。仅仅因为你有时能做一件事并不意味着你一定要做。我认为这种方式更好,因为它更清楚你想做什么。