public DataSourceResult SearchUsers(SearchUsersQuery request) { if (request == null) { throw new System.ArgumentNullException(nameof(request)); } var query = _context.UserProfiles.Include(x => x.User).AsQueryable(); if (!string.IsNullOrEmpty(request.Username)) { query = query.Where(x => x.User.Username.Contains(request.Username.ToLower())); } if (!string.IsNullOrEmpty(request.FirstName)) { query = query.Where(x => x.FirstName.ToLower().Contains(request.FirstName.ToLower())); } if (!string.IsNullOrEmpty(request.LastName)) { query = query.Where(x => x.LastName.ToLower().Contains(request.LastName.ToLower())); } query = query.OrderByDescending(x => x.CreatedOn); var result = new PagedResult <UserProfile>(query, request.PageIndex, request.PageSize); var response = new DataSourceResult { Data = result.AsQueryable().ProjectTo <UserDto>(_mapper.ConfigurationProvider), HasPreviousPage = result.HasPreviousPage, HasNextPage = result.HasNextPage, PageIndex = result.PageIndex, PageSize = result.PageSize, RecordsFiltered = result.Count, RecordsTotal = result.TotalCount, TotalPages = result.TotalPages }; return(response); }