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); }
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); }