Unable to create a constant value – only primitive types

First way :

Remove ToList() in the first query.

Or

//instead of retrieving mathings List, retrieve only the productIds you need (which are a List of Primitive types)
var productIdList = db.matchings
.Where(m => m.StoreId == StoreId)
.Select(x => x.ProductId)
.ToList();

var products = db.Products
.Where(p => productIdList
           .Contains(p.ProductId))
.ToList();

Or

//other way
var produts = db.Products
             .Where(p => db.matchings
                        .Any(m => m.StoreId == StoreId && 
                             m.ProductId == p.ProductId)
                    )
             .ToList();

Because I think you’re in linq2entities, and you’re using a List of Matchings in a query which is not possible (the title of your topic tend to make me believe that’s your problem).

Leave a Comment