Query the context or resulting list I was just getting some products using entity framework and was wondering which would be better to do when getting the results, or if there is no difference.

Option 1 - Query the context directly

return dbContext
                    .PPCProducts
                    .Include(p =&gt; p.Attributes)
                    .Include(p =&gt; p.ChildProducts)
                    .Where(p =&gt; p.Attributes.FirstOrDefault(a =&gt; a.AttributeName.IndexOf(attributeName, StringComparison.InvariantCultureIgnoreCase) &gt; -1) != null)
                    .OrderBy(p =&gt; p.ProductName)
                    .ToList();


Option 2 - Query the cache

// cache the products
var products = dbContext
   .PPCProducts
   .Include(p =&gt; p.Attributes)
   .Include(p =&gt; p.ChildProducts);
CacheHelper.Add("products", products, CacheDuration.Hours3);

// query the cache
return ((List&lt;Product&gt;)HttpContext.Current.Cache["products"]).Where(p =&gt; p.Attributes.FirstOrDefault(a =&gt; a.AttributeName.IndexOf(attributeName, StringComparison.InvariantCultureIgnoreCase) &gt; -1) != null)
                    .OrderBy(p =&gt; p.ProductName)
                    .ToList();
There are a few potential issues here, speed and accuracy in particular.
Speed
The cache is often faster than querying a value directly because of computation - you need to input, process, calculate, and output values.  For example, when you search the web, the servers return results based on cached data so they don't have to literally scan every website, read keywords, process data, etc.  Reading from the cache is as simple as getting the final value with no computation involved.
Accuracy
Querying a cache can return obsolete data.  Let's say you have a product priced at $X, and change the price for a sale.  If you don't update the cache, you will return outdated prices to your customers.  Querying the original data bypasses the intermediate value, always ensuring the value is correct.