示例#1
0
        public async Task <IActionResult> GetVehicle([FromBody] IQueryableVehicle queryObj)
        {
            var query = context.Vehicles.Include(v => v.Model).Include(v => v.Features).Include(v => v.Contact).OrderByDescending(v => v.Id).AsQueryable();

            query = query.ApplyFiltering(queryObj);

            //if (queryObj.SortBy == "contatName")
            //    query = (queryObj.IsSortAscending) ? query.OrderBy(v => v.Contact.ContactName) : query.OrderByDescending(v => v.Contact.ContactName);
            //else if (queryObj.SortBy == "model")
            //    query = (queryObj.IsSortAscending) ? query.OrderBy(v => v.ModelId) : query.OrderByDescending(v => v.ModelId);
            //else if (queryObj.SortBy == "make")
            //    query = (queryObj.IsSortAscending) ? query.OrderBy(v => v.Model.MakeID) : query.OrderByDescending(v => v.Model.MakeID);
            //else
            //    query = (queryObj.IsSortAscending) ? query.OrderBy(v => v.Id) : query.OrderByDescending(v => v.Id);

            Dictionary <string, Expression <Func <Vehicle, Object> > > columnsMap = new Dictionary <string, Expression <Func <Vehicle, Object> > >()
            {
                ["make"]        = v => v.Model.MakeID,
                ["model"]       = v => v.Model.Id,
                ["contactName"] = v => v.Contact.ContactName,
                ["id"]          = v => v.Id
            };

            //IQueryable queryable = query.AsQueryable();
            query = query.ApplyOrdering(queryObj, columnsMap);
            query = query.ApplyPaging(queryObj);
            return(Ok(query));
        }
示例#2
0
        public static IQueryable <Vehicle> ApplyFiltering(this IQueryable <Vehicle> query, IQueryableVehicle queryObj)
        {
            if (queryObj.MakeId.HasValue)
            {
                query = query.Where(v => v.Model.MakeID == queryObj.MakeId);
            }

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

            return(query);
        }