コード例 #1
0
        /// <summary>
        /// Фильтрация по имени группы
        /// </summary>
        /// <param name="paginationQuery">Запрос на постраничный вывод</param>
        /// <returns>Данные с постраничным выводом</returns>
        private async Task <PaginationResult <Student> > FilterByGroupName(PaginationQuery paginationQuery)
        {
            var groups = await _dbContext.Groups
                         .Where(x => x.Name == paginationQuery.Filter)
                         .ToArrayAsync();

            var groupIds = groups.Select(x => x.Id).ToArray();

            // Подгружаем связанную таблицу для отношения многие-ко-многим
            //
            var studentGroups = await _dbContext
                                .StudentGroups
                                .Where(x => groupIds.Contains(x.GroupId))
                                .ToArrayAsync();

            var query = PaginationQuery.Create(paginationQuery.Page, paginationQuery.PageSize);

            var a = await base.GetAll(query, f =>
                                      studentGroups.Select(x => x.StudentId)
                                      .Distinct()
                                      .Contains(f.Id)
                                      );

            return(a);
        }
コード例 #2
0
        public async Task <PaginationResult <Student> > GetAll([FromQuery] Pagination pagination)
        {
            var paginationQuery = PaginationQuery.Create(
                pagination.Page,
                pagination.PageSize,
                pagination.Filter,
                pagination.FilterBy
                );

            var student = await _repository.GetAll(paginationQuery);

            return(_mapper.Map <PaginationResult <Student> >(student));
        }