public List<Product> GetProducts() { Sorting<Common.Domain.Models.Product> [] sortings = new Sorting<Common.Domain.Models.Product>[] { new Sorting<Common.Domain.Models.Product>() { SortingType = SortingType.Desc, Expression = p=>p.Name }, new Sorting<Common.Domain.Models.Product>() { SortingType = SortingType.Asc, Expression = p=>p.Description } }; var queryParams = new GeneralQueryParams<Common.Domain.Models.Product>() { WhereExpressions = null,//new Expression<Func<Common.Domain.Models.Product, bool>>[] { p => p.Name.StartsWith("fir") }, SortExpressions = sortings }; var commonProducts = new ProductsService().GetProducts("parentCat", queryParams); return commonProducts.Select(cp => new Product() { Id = cp.Id, Name = cp.Name, CategoryName = cp.Categories.Single().Name, Description = cp.Description, CreatedTime = cp.CreatedTime, Energy = cp.AttributeValues.Single(av => av.Attribute.Name == "Energy").Value }).ToList(); }
//include childs categoriess public List<Product> GetProducts(string name, GeneralQueryParams<Product> queryParams) { using (var uow = new UnitOfWork()) { var categories = GetChildCategories(name, uow.CategoryRepository); long[] ids = categories.Select(c => c.Id).ToArray(); var rep = uow.ProductRepository; IQueryable<Product> allIncluding = rep.AllIncluding(p => p.Categories, p => p.AttributeValues, p => p.AttributeValues.Select(av => av.Attribute)) .Where(p => p.Categories.Any(c => ids.Contains(c.Id))); allIncluding = allIncluding.AddFilteringAndpaging(queryParams); return allIncluding.ToList(); } }