使用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()
它。