C# nopCommerce IPProductService返回IList而不是IQueryable

C# nopCommerce IPProductService返回IList而不是IQueryable,c#,nopcommerce,C#,Nopcommerce,nopCommerce中的ProductService类有一个方法GetAllProducts,它返回一个包含所有产品的IList 返回IQueryable不是更有意义吗?这样我可以自己进一步过滤查询 请参阅下面的代码- public virtual IList<Product> GetAllProducts(bool showHidden = false) { var query = from p in _productRepository.Tabl

nopCommerce中的ProductService类有一个方法GetAllProducts,它返回一个包含所有产品的IList

返回IQueryable不是更有意义吗?这样我可以自己进一步过滤查询

请参阅下面的代码-

    public virtual IList<Product> GetAllProducts(bool showHidden = false)
    {
        var query = from p in _productRepository.Table
                    orderby p.Name
                    where (showHidden || p.Published) &&
                    !p.Deleted
                    select p;
        var products = query.ToList();
        return products;
    }
当IQueryable完全足够时,为什么要将其转换为列表?我无法理解这背后的理由

考虑到这个特殊的限制,有没有一种方法可以在不修改Nop.Services代码的情况下解决这个问题

例如,我想运行一个查询,以获取过去5天内创建的所有产品。我认为没有办法通过IPProductService接口实现这一点

有没有一种简单的方法可以做到这一点?

这是可能的

例如:

var products = _productService.GetAllProducts().Where(p => p.CreatedOnUtc > DateTime.UtcNow.AddDays(-5));
这是可能的

例如:

var products = _productService.GetAllProducts().Where(p => p.CreatedOnUtc > DateTime.UtcNow.AddDays(-5));

既然已经获得了方法的源代码,为什么不添加一个不返回查询的扩展方法呢?\u productRepository变量是私有的,扩展方法可以访问私有变量吗?我从来没有想到过这个主意。如果没有黑客的帮助,他们是不可能的。我建议在电子商务论坛上提出这个问题,也许他们这样处理是有正当理由的。既然你已经有了这个方法的来源,为什么不给自己添加一个不返回查询的扩展方法呢?\u productRepository变量是私有的,扩展方法可以访问私有变量吗?我从来没有想过这个主意。如果没有黑客的帮助,他们是不可能做到的。我建议在电子商务论坛上提出这个问题,也许他们这样处理是有正当理由的。不,你根本不理解这个问题。我给了你一个解决方案。以后有没有其他的办法呢。例如,在重新创建新服务时。您没有为我的问题提供解决方案,而是告诉我如何完全执行我试图避免的操作。在这种情况下,您必须创建服务引用和依赖项注册器。这是一个插件?不,你根本不理解这个问题。我给了你一个解决方案。以后有没有其他的办法呢。例如,在重新创建新服务时。您没有为我的问题提供解决方案,而是告诉我如何完全执行我试图避免的操作。在这种情况下,您必须创建服务引用和依赖项注册器。这是一个插件?