Get All Except from SQL database using Entity Framework

c# entity-framework linq linq-to-entities sql-server

Question

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 ?

1
9
2/4/2013 7:48:10 AM

Accepted Answer

The following query works if associatedProducts list is fetched using EF in a previos query.

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

otherwise, if 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));
18
2/4/2013 8:07:07 AM

Popular Answer

            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?



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow