Click here to Skip to main content
15,888,590 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys,
I have a method like as you can see but it does not work correctly because this style return 0 items.
I am not sure but with this code where clause can be like this(I give some example parameter)

SQL
where  (Budget Between 130000 and 159999 or Budget Between 160000 and 20000) and  (SanzimanTipi ='xxx' and SanzimanTipi ='xxx') and (YakitTuru ='xxx')


but I ahave to Convert like this

SQL
where  (Budget Between 130000 and 159999 or Budget Between 160000 and 20000) and  (SanzimanTipi ='Otomatik' or SanzimanTipi ='Düz Vites') and (YakitTuru ='Dizel')


Please give me some answer

C#
public List<CarEntity> GetSearchByKCriteria(int cityId, List<string> fuelType, List<string> gearType, List<string> budget,
          List<string> caroser, List<string> enginePower)
      {
          Expression<Func<Car, bool>> query = null;
          Expression<Func<Car, bool>> combine = null;

          foreach (var bud in budget)
          {
              if (budget.Count >= 1)
              {
                  if (bud == "1")
                  {
                      if (budget.Count > 1)
                      {
                          query = car => car.Budget >= 20000 && car.Budget <= 34999;
                      }
                      else
                      {
                          query = car => car.Budget >= 20000 && car.Budget <= 34999;
                      }

                  }
                  else if (bud == "2")
                  {

                      if (query != null)
                      {
                          combine = car => (car.Budget >= 35000 && car.Budget <= 49999);
                          query = query.Or(combine);

                      }
                      else
                      {
                          query = car => car.Budget >= 35000 && car.Budget <= 49999;

                      }
                  }
              }
          }
          foreach (var caros in caroser)
          {
              if (caros != "-1" && !string.IsNullOrEmpty(caros))
              {
                  if (query != null)
                  {
                      if (query.Expand().ToString().ToLower().Contains("karoser"))
                      {
                          combine = car => (car.Karoser == caros);
                          query = query.And(combine);

                      }
                      else
                      {
                          combine = car => car.Karoser == caros;
                          query = query.And(combine);

                      }

                  }
                  else
                  {
                      query = car => car.Karoser == caros;
                  }
              }
          }
          foreach (var fuel in fuelType)
          {
              if (fuel != "-1" && !string.IsNullOrEmpty(fuel))
              {
                  if (query != null)
                  {
                      if (query.Expand().ToString().ToLower().Contains("yakituru"))
                      {
                          combine = car => (car.YakitTuru==fuel);
                          query = query.Or(combine);

                      }
                      else
                      {
                          combine = car => car.YakitTuru == fuel;
                          query = query.And(combine);

                      }

                  }
                  else
                  {
                      query = car => car.YakitTuru == fuel;
                  }
              }
          }
          foreach (var gear in gearType)
          {
              if (gear!="-1"&& !string.IsNullOrEmpty(gear))
              {
                  if (query != null)
                  {
                      if (query.Expand().ToString().ToLower().Contains("sanzimantipi"))
                      {
                          combine = car => (car.SanzimanTipi == gear);
                          query = query.Or(combine);

                      }
                      else
                      {
                          combine = car => car.SanzimanTipi == gear;
                          query = query.And(combine);

                      }

                  }
                  else
                  {
                      query = car => car.SanzimanTipi == gear;
                  }
              }
          }
          foreach (var engine in enginePower)
          {
              if (enginePower.Count >= 1)
              {
                  if (engine == "1")
                  {
                      if (query != null)
                      {
                          if (query.Expand().ToString().ToLower().Contains("silindirhacmi"))
                          {
                              combine = car => (car.SilindirHacmi >= 0 && car.SilindirHacmi <= 1600);
                              query = query.Or(combine);

                          }
                          else
                          {
                              combine = car => (car.SilindirHacmi >= 0 && car.SilindirHacmi <= 1600);
                              query = query.And(combine);

                          }

                      }
                      else
                      {
                          query = car => car.SilindirHacmi >= 0 && car.SilindirHacmi <= 1600;
                      }
                  }

                  if (engine == "3")
                  {
                      if (query != null)
                      {
                          if (query.Expand().ToString().ToLower().Contains("silindirhacmi"))
                          {
                              combine = car => (car.SilindirHacmi >= 1601 && car.SilindirHacmi <= 1800);
                              query = query.Or(combine);

                          }
                          else
                          {
                              combine = car => (car.SilindirHacmi >= 1601 && car.SilindirHacmi <= 1800);
                              query = query.And(combine);

                          }

                      }
                      else
                      {
                          query = car => car.SilindirHacmi >= 1601 && car.SilindirHacmi <= 1800;
                      }
                  }

          }

          using (var context = DataContextFactory.CreateContext())
          {

              var result = (from fkCar in context.Car.Where(query)
                            join pkCarBrand in context.CarBrand on fkCar.Marka equals pkCarBrand.ID
                            where fkCar.IsActive == true

                            select new
                            {
                                entity = fkCar,
                                joinEntity = pkCarBrand
                            });
              List<CarEntity> theCarList = new List<CarEntity>();
              foreach (var item in result)
              {
                  CarEntity theEntity = Mapper.Map(item.entity);
                  theEntity.CarBrand = Mapper.Map(item.joinEntity);
                  theCarList.Add(theEntity);

              }
              return theCarList;
          }
      }
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900