public static string GetCacheKey <TResponse>(this QueriesQuery <TResponse> query) { var properties = query.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) .Select(x => { var val = x.GetValue(query); if (val == null) { return(null); } return(x.Name + ":" + val.ToString()); }).Where(x => x != null); return("urn:{0}:{1}".Fmt(query.GetType().FullName, properties.Join(":"))); }
private static void ProcessQuery(QueriesQuery query) { var db = new CarsSystemDbContext(); var carsQuery = db.Cars.AsQueryable(); foreach (var whereClauses in query.WhereClauses) { switch (whereClauses.PropertyName) { case "Year": switch (whereClauses.Type) { case "Equals": carsQuery = carsQuery.Where(c => c.Id == int.Parse(whereClauses.Value)); break; case "GreaterThan": carsQuery = carsQuery.Where(c => c.Id > int.Parse(whereClauses.Value)); break; case "LessThan": carsQuery = carsQuery.Where(c => c.Id < int.Parse(whereClauses.Value)); break; } break; case "Model": break; case "Price": break; case "Manufacturer": break; case "Dealer": break; default: break; } } switch (query.OrderBy) { case "Year": carsQuery = carsQuery.OrderBy(c => c.Year); break; case "Model": carsQuery = carsQuery.OrderBy(c => c.Model); break; case "Price": carsQuery = carsQuery.OrderBy(c => c.Price); break; case "Manufacturer": carsQuery = carsQuery.OrderBy(c => c.Manufacturer.Name); break; case "Dealer": carsQuery = carsQuery.OrderBy(c => c.Dealer.Name); break; default: break; } }
private static List <CarOutputXmlModel> ProcessQuery(QueriesQuery query, CarSystemDbContext db) { // var db = new CarsDbContext(); var dataQuery = db.Cars.Select( car => new CarOutputXmlModel { Id = car.Id, Manufacturer = car.Manufacturer.Name, Model = car.Model, Price = car.Price, Year = car.Year, TransmissionType = car.Transmitiontype == Models.TransmitionType.Manual ? "manual" : "automatic", Dealer = new DealerXmlModel { Name = car.Dealer.Name, Cities = car.Dealer.Cities.Select(city => city.Name).ToList(), } }); switch (query.OrderBy) { case "Id": dataQuery = dataQuery.OrderBy(x => x.Id); break; case "Year": dataQuery = dataQuery.OrderBy(x => x.Year); break; case "Model": dataQuery = dataQuery.OrderBy(x => x.Model); break; case "Price": dataQuery = dataQuery.OrderBy(x => x.Price); break; case "Manufacturer": dataQuery = dataQuery.OrderBy(x => x.Manufacturer); break; case "Dealer": dataQuery = dataQuery.OrderBy(x => x.Dealer.Name); break; } foreach (var whereClause in query.WhereClauses) { if (whereClause.PropertyName == "Id") { var constant = int.Parse(whereClause.Value); switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Id == constant); break; case GreaterThan: dataQuery = dataQuery.Where(x => x.Id > constant); break; case LessThan: dataQuery = dataQuery.Where(x => x.Id < constant); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "Year") { var constant = int.Parse(whereClause.Value); switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Year == constant); break; case GreaterThan: dataQuery = dataQuery.Where(x => x.Year > constant); break; case LessThan: dataQuery = dataQuery.Where(x => x.Year < constant); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "Price") { var constant = decimal.Parse(whereClause.Value); switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Price == constant); break; case GreaterThan: dataQuery = dataQuery.Where(x => x.Price > constant); break; case LessThan: dataQuery = dataQuery.Where(x => x.Price < constant); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "Model") { switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Model == whereClause.Value); break; case Contains: dataQuery = dataQuery.Where(x => x.Model.Contains(whereClause.Value)); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "Manufacturer") { switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Manufacturer == whereClause.Value); break; case Contains: dataQuery = dataQuery.Where(x => x.Manufacturer.Contains(whereClause.Value)); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "Dealer") { switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Dealer.Name == whereClause.Value); break; case Contains: dataQuery = dataQuery.Where(x => x.Dealer.Name.Contains(whereClause.Value)); break; default: throw new ArgumentOutOfRangeException(); } } else if (whereClause.PropertyName == "City") { switch (whereClause.Type) { case Equal: dataQuery = dataQuery.Where(x => x.Dealer.Cities.Contains(whereClause.Value)); break; default: throw new ArgumentOutOfRangeException(); } } } var data = dataQuery.ToList(); return(data); //var serializer = new XmlSerializer(data.GetType(), new XmlRootAttribute("Cars")); //using (var fs = new FileStream(query.OutputFileName, FileMode.Create)) //{ // serializer.Serialize(fs, data); //} //System.Console.WriteLine(); //System.Console.WriteLine("{0} ready.", query.OutputFileName); }
private static void ProcessQuery(QueriesQuery query) { var db = new CarsDbContext(); var carsQuery = db.Cars.AsQueryable(); foreach (var whereClause in query.WhereClauses) { switch (whereClause.PropertyName) { case "Id": switch (whereClause.Type) { case "Equals": carsQuery = carsQuery.Where(c => c.Id == int.Parse(whereClause.Value)); break; case "GreaterThan": carsQuery = carsQuery.Where(c => c.Id > int.Parse(whereClause.Value)); break; case "LessThan": carsQuery = carsQuery.Where(c => c.Id < int.Parse(whereClause.Value)); break; default: break; } break; case "Year": break; case "Price": break; case "Model": break; case "Manufacturer": break; case "Dealer": break; case "City": break; default: break; } switch (query.OrderBy) { case "Id": carsQuery = carsQuery.OrderBy(c => c.Id); break; case "Year": carsQuery = carsQuery.OrderBy(c => c.Year); break; case "Model": carsQuery = carsQuery.OrderBy(c => c.Model); break; case "Price": carsQuery = carsQuery.OrderBy(c => c.Price); break; case "Manufacturer": carsQuery = carsQuery.OrderBy(c => c.Manufacturer.Name); break; case "Dealer": carsQuery = carsQuery.OrderBy(c => c.Dealer.Name); break; default: break; } } }