public Task <SearchResult <ProcessFileResult> > Find(FindProcessFilesParameter parameter, CancellationToken token) { IQueryable <ProcessFileAggregate> result = _processFiles.AsQueryable(); if (!string.IsNullOrWhiteSpace(parameter.FileId)) { result = result.Where(_ => _.FileId == parameter.FileId); } if (parameter.TakeLatest) { result = result.OrderByDescending(r => r.Version); result = result.GroupBy(r => r.FileId).Select(r => r.First()); } if (MAPPING_PROCESSFILE_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy)) { result = result.InvokeOrderBy(MAPPING_PROCESSFILE_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order); } int totalLength = result.Count(); result = result.Skip(parameter.StartIndex).Take(parameter.Count); return(Task.FromResult(new SearchResult <ProcessFileResult> { StartIndex = parameter.StartIndex, Count = parameter.Count, TotalLength = totalLength, Content = result.Select(_ => ProcessFileResult.ToDto(_)).ToList() })); }
public async Task <FindResponse <ProcessFileAggregate> > Find(FindProcessFilesParameter parameter, CancellationToken token) { IQueryable <ProcessFileModel> result = _dbContext.ProcessFiles.AsQueryable(); if (MAPPING_PROCESSFILE_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy)) { result = result.InvokeOrderBy(MAPPING_PROCESSFILE_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order); } int totalLength = await result.CountAsync(token); result = result.Skip(parameter.StartIndex).Take(parameter.Count); var content = await result.ToListAsync(token); if (parameter.TakeLatest) { content = content.OrderByDescending(r => r.Version).GroupBy(r => r.FileId).Select(r => r.First()).ToList(); } return(new FindResponse <ProcessFileAggregate> { StartIndex = parameter.StartIndex, Count = parameter.Count, TotalLength = totalLength, Content = content.Select(_ => _.ToDomain()).ToList() }); }