public void TestPagination()
        {
            IPagedList<Notice> p1 = rep.Pagination(c => c.Id, 1, 10);
            IPagedList<ViewModel> p2 = rep.Pagination(c => c.Id, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);
            IPagedList<Notice> p3 = rep.Pagination(c => c.TagId > 0, c => c.Id, 1, 10);
            IPagedList<ViewModel> p4 = rep.Pagination(c => c.TagId > 0, c => c.Id, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);

            IGroupOrderBy<Notice> groupOrderBy = GroupOrderBy<Notice>.Create(x => x.Id, Order.Asc).Add(x => x.TagId, Order.Desc);
            IPagedList<Notice> p5 = rep.Pagination(groupOrderBy, 1, 10);
            IPagedList<Notice> p6 = rep.Pagination(groupOrderBy, c => c.TagId > 0, 1, 10);
            IPagedList<ViewModel> p7 = rep.Pagination(groupOrderBy, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);
            IPagedList<ViewModel> p8 = rep.Pagination(groupOrderBy, c => c.TagId > 0, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);
            
            ConfigurationOrderByPagination<Notice> configNotice = new ConfigurationOrderByPagination<Notice>();
            configNotice.OrderBy.Add(c => c.Active);
            configNotice.Page = 1;
            configNotice.Total = 2;

            ConfigurationOrderByPaginationSelect<Notice, ViewModel> configNoticeViewModel = new ConfigurationOrderByPaginationSelect<Notice, ViewModel>();
            configNoticeViewModel.OrderBy.Add(c => c.Active);
            configNoticeViewModel.Page = 1;
            configNoticeViewModel.Total = 2;
            configNoticeViewModel.Select.Set(s => new ViewModel { Id = s.Id, Title = s.Title });

            IPagedList<Notice> p9 = rep.Pagination(configNotice);
            IPagedList<ViewModel> p10 = rep.Pagination(configNoticeViewModel);

            IPagedList<Notice> p11 = rep.Pagination<ConfigurationOrderByPagination<Notice>>(a =>
            {
                a.OrderBy.Add(c => c.Active);
                a.Page = 1;
                a.Total = 2;
            });
            IPagedList<ViewModel> p12 = rep.Pagination<ConfigurationOrderByPaginationSelect<Notice, ViewModel>, ViewModel>(a =>
            {
                a.OrderBy.Add(c => c.Active);
                a.Page = 1;
                a.Total = 2;
                a.Select.Set(s => new ViewModel { Id = s.Id, Title = s.Title });
            });

            Assert.NotNull(p1);
            Assert.NotNull(p2);
            Assert.NotNull(p3);
            Assert.NotNull(p4);
            Assert.NotNull(p5);
            Assert.NotNull(p6);
            Assert.NotNull(p7);
            Assert.NotNull(p8);
            Assert.NotNull(p9);
            Assert.NotNull(p10);
            Assert.NotNull(p11);
            Assert.NotNull(p12);
        }
        private static void ToPagination(RepositoryNoticeContract rep)
        {
            IPagedList<Notice> p1 = rep.Pagination(c => c.Id, 1, 10);
            IPagedList<ViewModel> p2 = rep.Pagination(c => c.Id, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);
            IPagedList<Notice> p3 = rep.Pagination(c => c.TagId > 0, c => c.Id, 1, 10);
            IPagedList<ViewModel> p4 = rep.Pagination(c => c.TagId > 0, c => c.Id, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);

            IGroupOrderBy<Notice> groupOrderBy = GroupOrderBy<Notice>.Create(x => x.Id, Order.Asc).Add(x => x.TagId, Order.Desc);
            IPagedList<Notice> p5 = rep.Pagination(groupOrderBy, 1, 10);
            IPagedList<Notice> p6 = rep.Pagination(groupOrderBy, c => c.TagId > 0, 1, 10);
            IPagedList<ViewModel> p7 = rep.Pagination(groupOrderBy, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);
            IPagedList<ViewModel> p8 = rep.Pagination(groupOrderBy, c => c.TagId > 0, s => new ViewModel { Id = s.Id, Title = s.Title }, 1, 10);

            ConfigurationOrderByPagination<Notice> configNotice = new ConfigurationOrderByPagination<Notice>();
            configNotice.OrderBy.Add(c => c.Active);
            configNotice.Page = 1;
            configNotice.Total = 2;

            ConfigurationOrderByPaginationSelect<Notice, ViewModel> configNoticeViewModel = new ConfigurationOrderByPaginationSelect<Notice, ViewModel>();
            configNoticeViewModel.OrderBy.Add(c => c.Active);
            configNoticeViewModel.Page = 1;
            configNoticeViewModel.Total = 2;
            configNoticeViewModel.Select.Set(s => new ViewModel { Id = s.Id, Title = s.Title });

            IPagedList<Notice> p9 = rep.Pagination(configNotice);
            IPagedList<ViewModel> p10 = rep.Pagination(configNoticeViewModel);

            IPagedList<Notice> p11 = rep.Pagination<ConfigurationOrderByPagination<Notice>>(a =>
            {
                a.OrderBy.Add(c => c.Active);
                a.Page = 1;
                a.Total = 2;
            });
            IPagedList<ViewModel> p12 = rep.Pagination<ConfigurationOrderByPaginationSelect<Notice, ViewModel>, ViewModel>(a =>
            {
                a.OrderBy.Add(c => c.Title);
                a.Page = 1;
                a.Total = 2;
                a.Select.Set(s => new ViewModel { Id = s.Id, Title = s.Title });
            });
        }