public IEnumerable <T> Page <T>( ISpecification <T> spec, int offsetPage = 0, int pageSize = 10, ISortFactory <T, long> sortFactory = null, bool track = false, bool incSoftDel = false, params Expression <Func <T, object> >[] includes) where T : BaseEntity { var filtered = FindAll(spec, track, incSoftDel, includes); IOrderedQueryable <T> results; if (sortFactory != null) { results = sortFactory.ApplySorts(filtered); } else { results = filtered.OrderBy(t => t.Id); } var query = results .Skip(offsetPage * pageSize) .Take(pageSize); return(query.ToList()); }
public void SortTest() { var quickSort = ISortFactory.GetSort(Sort.QuickSort); List <int> input = null; quickSort.Sort(input); Assert.IsNull(input); input = new List <int>(); quickSort.Sort(input); Assert.AreEqual(0, input.Count); input = new List <int> { 5 }; quickSort.Sort(input); Assert.AreEqual(1, input.Count); Assert.AreEqual(5, input[0]); input = new List <int> { 5, 4, 1, 8, 6, 7, 3, 5, 0, 9, 1, 2, 5, 3 }; quickSort.Sort(input); Assert.AreEqual(14, input.Count); var expected = new List <int> { 0, 1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 7, 8, 9 }; for (var i = 0; i < 14; i++) { Assert.AreEqual(expected[i], input[i]); } }
public ODataQueryParser() { m_queryFactory = new QueryFactory(); //m_selectFilterFactory = new SelectFilterFactory(); m_filterFactory = new QueryFactory(); m_sortFactory = new SortFactory(); }
public static Tree CreateBinarySearchTree(List <int> input, bool isInputOrdered = false) { var length = input?.Count ?? 0; if (length == 0) { return(null); } if (length == 1) { return(new Tree(input[0])); } if (!isInputOrdered) { var quickSort = ISortFactory.GetSort(Sort.QuickSort); quickSort.Sort(input); } var halfLength = length / 2; var inputLeft = input.GetRange(0, halfLength); var inputRight = input.GetRange(halfLength + 1, (Math.Min(halfLength, length - 1 - halfLength))); return(new Tree(input[halfLength]) { Left = CreateBinarySearchTree(inputLeft, true), Right = CreateBinarySearchTree(inputRight, true) }); }
public NewsService(IQueryableArticleRepository articleRepository, IPaginationService paginationService, ISortFactory <ArticleData> sortFactory, INewsFilterBuilder newsFilterBuilder) { _articleRepository = articleRepository; _paginationService = paginationService; _sortFactory = sortFactory; _newsFilterBuilder = newsFilterBuilder; }
public ElasticSearchWrapper(IElasticClient esClient, IQueryFactory queryFactory, IPagingHelper pagingHelper, ISortFactory sortFactory, ILogger <ElasticSearchWrapper> logger, IIndexSelector indexSelector, IFilterFactory filterFactory) { _esClient = esClient; _queryFactory = queryFactory; _pagingHelper = pagingHelper; _sortFactory = sortFactory; _filterFactory = filterFactory; _logger = logger; _indexSelector = indexSelector; }
public IOrderedQueryable <T> Page <T>( ISpecification <T> spec, ISortFactory <T, TKey> sortFactory, int offsetPage = 0, int pageSize = 10, params Expression <Func <T, object> >[] includes) where T : class, IEntity <TKey> { var filtered = FindAll(spec, includes); var results = sortFactory.ApplySorts(filtered); var query = (IOrderedQueryable <T>)results .Skip(offsetPage * pageSize) .Take(pageSize); return(query); }