/// <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); }
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)); }