Пример #1
0
        public async Task <QueryResult <Vechile> > GetVechiles(VechileQuery queryObj)
        {
            var result = new QueryResult <Vechile>();

            var query = context.Vechiles
                        .Include(v => v.Model)
                        .ThenInclude(m => m.Make)
                        .AsQueryable();

            query = query.ApplyFiltering(queryObj);

            var columnsMap = new Dictionary <string, Expression <Func <Vechile, object> > >()
            {
                ["make"]        = v => v.Model.Make.Name,
                ["model"]       = v => v.Model.Name,
                ["contactName"] = v => v.ContactName
            };

            query = query.ApplyOrdering(queryObj, columnsMap);

            result.TotalItems = await query.CountAsync();

            query = query.ApplyPaging(queryObj);

            result.Items = await query.ToListAsync();

            return(result);
        }
Пример #2
0
        public static IQueryable <Vechile> ApplyFiltering(this IQueryable <Vechile> query, VechileQuery queryObj)
        {
            if (queryObj.MakeId.HasValue)
            {
                query = query.Where(v => v.Model.MakeId == queryObj.MakeId.Value);
            }

            if (queryObj.ModelId.HasValue)
            {
                query = query.Where(v => v.ModelId == queryObj.ModelId.Value);
            }

            return(query);
        }