C# LINQ到SQL-如果没有关系,则删除多对多

C# LINQ到SQL-如果没有关系,则删除多对多,c#,asp.net,linq,linq-to-sql,C#,Asp.net,Linq,Linq To Sql,我有一个存储“标签”的表格,如下所示: M2M地图表格如下: ProductTagMap ProductID PK TagID PK 现在让我们假设我从一个产品中删除一个标记关系(或全部),如下所示: // get our Product we are working on... Product product = dataContext.Products.Where(p > p.ProductID = 1); // this remove the lin

我有一个存储“标签”的表格,如下所示:

M2M地图表格如下:

ProductTagMap
    ProductID PK
    TagID     PK
现在让我们假设我从一个产品中删除一个标记关系(或全部),如下所示:

 // get our Product we are working on...
 Product product = dataContext.Products.Where(p > p.ProductID = 1);

 // this remove the link between the product and its tags
 dataContext.ProductTagMaps.DeleteAllOnSubmit(product.ProductTagMaps);

 //*** If these product-specific Tag/s is/are no longer used ***/
 //*** by any other Products I'd like to delete them         ***/
 //*** How can this be done here?                            ***/

 dataContext.SubmitChanges();
如果这些标签(与特定产品相关)不再与任何产品相关,我希望将其删除。
如何在上面的代码中做到这一点(请参见注释)?

由于这需要检查其他记录中的其他映射,因此必须执行查询以检查孤立项:

var tags =    from t in dataContext.Tags
    where t.ProductTags.Count() == 0
    select t;
dataContext.Tags.DeleteAllOnSubmit(tags);
这将为您提供可以删除的标记

var tags =    from t in dataContext.Tags
    where t.ProductTags.Count() == 0
    select t;
dataContext.Tags.DeleteAllOnSubmit(tags);