使用Entity Framework从SQL数据库中获取所有内容

我有这样的产品清单

var r = db.Products.Where(x => x.Sites .Where(z => z.Key == associatedProducts.Key) .Any() ).ToList() 

有一个名为Products的实体,我想从产品中获取所有元素,但那些存在于associatedProducts.Products中

我怎样才能做到这一点 ?

如果在previos查询中使用EF获取associatedProducts列表,则以下查询有效。

 var temp = db.Products.ToList().Except(associatedProducts).ToList(); 

否则,如果associatedProducts是一个尚未使用EF获取的列表(假设Key是一个整数);

 List tempIdList = associatedProducts.Select(q => q.Key ).ToList(); var temp = db.Products.Where(q => !tempIdList.Contains(q.Key)); 
  var query = from p in db.Products where !(from a in associatedProducts.Products select a.Products) .Contains(p.Key) select p; 

我没有测试查询,但它应该是这样的。

您应该看看如何在linq中使用“not in”:
你会如何使用LINQ进行“不在”查询?

您可以加载要排除的产品列表,然后从所有产品列表中排除.Exclude()它。