2

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 天内创建的所有产品。我看不到通过 IProductService 接口执行此操作的方法。

有没有一种简单的方法来做这样的事情?

4

1 回答 1

0

这是可能的。

例子:

var products = _productService.GetAllProducts().Where(p => p.CreatedOnUtc > DateTime.UtcNow.AddDays(-5));
于 2012-09-06T13:26:26.317 回答