public IList <IVoziloModel> DohvatiVozila(ISorter sorter, IFilter filter, INumerer stranica)
        {
            IQueryable <IVoziloModel> upit      = null;
            IList <IVoziloModel>      kolekcija = null;

            //var azuriranje = _db.Database.ExecuteSqlCommand("UPDATE VoziloModels SET VoziloMarka_Id = IdMarke;");

            upit = (!String.IsNullOrEmpty(filter.PretragaUpita) || filter.IdMarke > 0)
                ?
                   upit = (!String.IsNullOrEmpty(filter.PretragaUpita) && filter.IdMarke > 0)
                    ?
                          _db.VoziloModeli.Where(x => x.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()) && x.IdMarke == filter.IdMarke)
                    :
                          _db.VoziloModeli.Where(x => x.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()) || x.IdMarke == filter.IdMarke)
                :
                          _db.VoziloModeli;


            switch (sorter.Stupac)
            {
            case "Id":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Id) : upit.OrderByDescending(x => x.Id);
                break;

            case "NazivMarke":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.VoziloMarka.Naziv) : upit.OrderByDescending(x => x.VoziloMarka.Naziv);
                break;

            case "NazivModela":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Naziv) : upit.OrderByDescending(x => x.Naziv);
                break;

            case "Kratica":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Kratica) : upit.OrderByDescending(x => x.Kratica);
                break;
            }

            kolekcija = upit.ToList();

            return(kolekcija);
        }
        public IPagedList <IVoziloMarka> DohvatiMarke(ISorter sorter, IFilter filter, INumerer stranica)
        {
            //Numerer strIspis = (Numerer)stranica;
            //Sorter sorter = (Sorter)sort;
            IQueryable <IVoziloMarka> upit      = null;
            IPagedList <IVoziloMarka> kolekcija = null;

            //sorter.Poredak = (sorter.Poredak == "A") ? "ASC" : "DESC";
            //sorter.Poredak = (sorter.Poredak == "A") ? "OrderBy" : "OrderByDescending";

            //var parametar = Expression.Parameter(typeof(VoziloMarka), "item");      //  -- kreiranje parametra
            //var izraz = Expression.Property(parametar, sorter.Stupac);
            //var konverzija = Expression.Convert(izraz, typeof(object));
            //var lambda = Expression.Lambda<Func<VoziloMarka, object>>(konverzija, parametar);
            //var lambda = Expression.Lambda(izraz, parametar);
            //MethodCallExpression ispis = null;
            //PropertyInfo svojstvo = typeof(VoziloMarka).GetProperty(sorter.Stupac);

            //string upit = "SELECT * FROM VoziloMarkas" ORDER BY " + sorter.Stupac + " " + sorter.Poredak + "; ";
            //List<VoziloMarka> kolekcija = _db.VoziloMarke.SqlQuery("SELECT* FROM VoziloMarkas " + sorter.Sort + "; ").ToList();

            //kolekcija = _db.VoziloMarke.SqlQuery("SELECT * FROM VoziloMarkas WHERE Naziv LIKE '%" + filter.Naziv + "%' " + sorter.Sort + " ;").ToList();
            //kolekcija = (from item in _db.VoziloMarke where item.Naziv.ToLower().Contains(filter.Naziv.ToLower()) select item).OrderBy(x => x.GetType().ToString() == sorter.Stupac);
            //upit = (from item in _db.VoziloMarke where item.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()) select item);

            //NAPOMENA: CIJELI UVJET SVEDEN NA SAMO SLJEDEĆU LINIJU KODA
            upit = (String.IsNullOrEmpty(filter.PretragaUpita))? _db.VoziloMarke : _db.VoziloMarke.Where(x => x.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()));

            //ispis = Expression.Call(typeof(Queryable), sorter.Poredak, new[] { typeof(VoziloMarka), izraz.Type }, upit.Expression, Expression.Quote(lambda));

            switch (sorter.Stupac)
            {
            case "Id":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Id) : upit.OrderByDescending(x => x.Id);
                break;

            case "Naziv":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Naziv) : upit.OrderByDescending(x => x.Naziv);
                break;

            case "Kratica":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Kratica) : upit.OrderByDescending(x => x.Kratica);
                break;
            }
            //kolekcija = upit.Provider.CreateQuery<VoziloMarka>(ispis).Skip((strIspis.Str - 1) * strIspis.BrRedova).Take(strIspis.BrRedova).ToList();
            //kolekcija = upit.OrderBy(sorter.Stupac + " " + sorter.Poredak).Skip((strIspis.Str - 1) * strIspis.BrRedova).Take(strIspis.BrRedova).ToList();
            //OrderBy(lambda,Compile())
            //OrderBy(item => svojstvo.GetValue(item))
            //OrderBy(item => item.GetType().GetProperty(property).GetValue(item))

            kolekcija = upit.ToPagedList(stranica.Str, stranica.BrRedova);

            return(kolekcija);
        }
        public IPagedList <IVoziloModel> DohvatiModele(ISorter sorter, IFilter filter, INumerer stranica)
        {
            IQueryable <IVoziloModel> upit      = null;
            IPagedList <IVoziloModel> kolekcija = null;

            //NAPOMENA: CIJELI VELIKI UVJET SVEDEN NA SLJEDEĆE LINIJE KODA
            upit = (!String.IsNullOrEmpty(filter.PretragaUpita) || filter.IdMarke > 0)
                ?
                   upit = (!String.IsNullOrEmpty(filter.PretragaUpita) && filter.IdMarke > 0)
                    ?
                          _db.VoziloModeli.Where(x => x.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()) && x.IdMarke == filter.IdMarke)
                    :
                          _db.VoziloModeli.Where(x => x.Naziv.ToLower().Contains(filter.PretragaUpita.ToLower()) || x.IdMarke == filter.IdMarke)
                :
                          _db.VoziloModeli;


            switch (sorter.Stupac)
            {
            case "Id":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Id) : upit.OrderByDescending(x => x.Id);
                break;

            case "IdMarke":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.IdMarke) : upit.OrderByDescending(x => x.IdMarke);
                break;

            case "Naziv":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Naziv) : upit.OrderByDescending(x => x.Naziv);
                break;

            case "Kratica":
                upit = (sorter.Poredak == "A") ? upit.OrderBy(x => x.Kratica) : upit.OrderByDescending(x => x.Kratica);
                break;
            }

            kolekcija = upit.ToPagedList(stranica.Str, stranica.BrRedova);

            return(kolekcija);
        }