Это потому, что _db.Products не является запросом, это DbSet.
_db.Products
Второй блок работает, потому что вы его передаете в IQueryable, а последний работает, потому что это фактический запрос.