private void FillFilterExpression(RobotTypeFilterParams filterParams) { Expression <Func <RobotType, bool> > predicate = PredicateBuilder.New <RobotType>(true); if (!string.IsNullOrEmpty(filterParams.Term)) { predicate = predicate.Extend(t => t.Name.Contains(filterParams.Term)); } filterParams.Expression = predicate; }
public async Task <CollectionResult <RobotType> > GetTypesByFilterParamsAsync(RobotTypeFilterParams filterParams, CancellationToken ct = default) { IQueryable <RobotType> query = DbContext.RobotTypes.AsQueryable(); FillFilterExpression(filterParams); query = query.Where(filterParams.Expression); int totalCount = query.Count(); List <RobotType> items = await query .OrderBy(x => x.Name) .WithPagination(filterParams.Skip, filterParams.Take) .AsNoTracking() .ToListAsync(ct); CollectionResult <RobotType> result = new CollectionResult <RobotType> { Collection = items, TotalCount = totalCount }; return(result); }