I have a list of Products like this
var r = db.Products.Where(x => x.Sites .Where(z => z.Key == associatedProducts.Key) .Any() ).ToList()
There is an entity called Products, I want to get all elements from products except those exist in associatedProducts.Products
How can i do that ?
The following query works if associatedProducts list is fetched using EF in a previos query.
var temp = db.Products.ToList().Except(associatedProducts).ToList();
associatedProducts is a list which has not been fetched using EF (assuming
Key is an integer);
List<int> 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;
I didn't test the query, but it should look like this.
You should have a look at how you can use "not in" in linq:
How would you do a "not in" query with LINQ?