I would consider this a bug but maybe it's by design. Let me know your thoughts...

When filtering results using the specification attribute options, more commonly know as faceting, most websites practice facet exclusion. That means when you select a facet, the other facets that no longer qualify based on your selection are removed.

The NOP system does not do this. Instead, NOP practices a variation of facet inclusion but if a specific combination of facets are selected, an empty result set could be returned. You can reproduce this on the demo site at http://demo.nopcommerce.com/notebooks.

1. Click on the "Intel Core i5" CUP Type option.
   -- You'll notice that 3 computers are available.
2. Now select the 16GB memory option.
   -- You'll notice that no computers are available and it's because that particular combination doesn't exist.

With facet exclusion the option of "16 GB" memory would be removed if the "Intel Core i5" option is selected and the user would never be returned an empty set of results.

I've verified that this occurs in version 3.9 and 4.0 but it may also exists in earlier versions.

To incorporate facet exclusion, a small modification would need to be made to the ProductLoadAllPaged stored procedure. The good thing about this modification is that it removes a subquery which should give you better performance.

You can see the diff here...
https://www.diffchecker.com/SWVBgjz4

I'm assuming you would also have to make the change in the Linq alternative query but I didn't investigate that.

Thanks!