示例#1
0
        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());
        }
示例#2
0
        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]);
            }
        }
示例#3
0
 public ODataQueryParser()
 {
     m_queryFactory = new QueryFactory();
     //m_selectFilterFactory = new SelectFilterFactory();
     m_filterFactory = new QueryFactory();
     m_sortFactory   = new SortFactory();
 }
示例#4
0
        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)
            });
        }
示例#5
0
 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;
 }
示例#7
0
        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);
        }