Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 31 odgovor
  • 10.369 pregleda

Najnovija ↓

Linq problem - kako spojiti upit... 24.12.2014. u 07:28 · pre 144 meseca #1
Pozdrav!

Kako da postojeći linq upit rasparčam u delove ( select , groupby, order) i spajam ih po izboru ( bez groupby ili sa groupby ) ?

var query1 = from qin baza_kon.Tabela

where a.Aktivan == 1

group a by a.kolona1 into newGroup

orderby newGroup.Key

select newGroup;



ako neko zna molim za pomoć...

Hvala!!

Patak
Re: Linq problem - kako spojiti upit... 24.12.2014. u 09:33 · pre 144 meseca #2
Code:

var where_part = baza_kon.Tabela.Where(a => a.Aktivane == 1);
var group_part = where_part.GroupBy(a => a.kolona1);
var orderby_part = group_part.OrderBy(a => a.Key);



Proveri malo, mozda sam negde omasio, kucao sam napamet, bez VS-a.
Stvar je u tome da se svi ti LINQ upiti konvertuju u pozive funkcijama koje mozes i sam koristiti sto je i prakticnije za ovo sto ti treba.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Linq problem - kako spojiti upit... 24.12.2014. u 10:28 · pre 144 meseca #4
Ako su podaci grupisani da li moram praviti novi View u odnosu ako nisu ?
Da li postoji neko eleganto rešenje ?
Re: Linq problem - kako spojiti upit... 25.12.2014. u 10:42 · pre 144 meseca #5
Da li neko ima predlog kako uraditi View ako postoji mogućnost da podaci budu grupisani i ne moraju biti ?

Kada u View bude
@model List<IGrouping< string , Model>> onda su grupisani podaci

a postoji mogućnost da korisnik ne želi da gupiše podatke.

Ako neko ima predlog ?

Hvala!

Poz

Re: Linq problem - kako spojiti upit... 25.12.2014. u 10:50 · pre 144 meseca #6
Uvek mozes da grupises sve podatke u jednu grupu, tako ne moras da menjas model type u View-u.

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 25.12.2014. u 11:00 · pre 144 meseca #7
Kada posle svih delova i spajanja linq upita....dobijem query2

var keyEmplist = (from IGrouping<string,Model> dat in query2 select dat).ToList();


return View("FormResults", keyEmplist);


kako da ih gupišem u jednu gupu ?

Hvala!


Re: Linq problem - kako spojiti upit... 25.12.2014. u 11:26 · pre 144 meseca #8
Pa ti si tu vec grupisao podatke. Imas sigurno neki if/then/else branch koji ti generise LINQ koji nije grupisan. Njega grupises u isti tip kao i ovaj linq.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 25.12.2014. u 12:49 · pre 144 meseca #9
Uradio sa grupisanje podataka...radi odlično...

ali kada šaljem u View prijavi grešku...jer očekuje string a ja grupisao po int ( grupisano po Id iz tabele )
onda moram da promenim i u View u int..

var keyEmplist = (from IGrouping<string, Vezbe_sa_DIV.EF.Tiket> dat in query2 select dat).ToList();

onda View zavisi on kontrolera i kojeg šaljem podatke...ili ne ?
Re: Linq problem - kako spojiti upit... 25.12.2014. u 13:18 · pre 144 meseca #10
Probaj da stavis object kao parametar koji ocekujes umesto string pa proveravaj jel string ili int ili...
Potpis
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
Re: Linq problem - kako spojiti upit... 25.12.2014. u 13:45 · pre 144 meseca #11
Uspeo sam da rešim...uvek ću da grupišem po int (id, id_mesta, id_posla ...)
...ali samo još ovo

kako mmix piše

Citat:
mmix: Pa ti si tu vec grupisao podatke. Imas sigurno neki if/then/else branch koji ti generise LINQ koji nije grupisan. Njega grupises u isti tip kao i ovaj linq.


vrati mi se samo Key vrednost a meni trebaju i ostale vrednosti iz te tabele koju sam grupisao po Id...

molim za pomoć.

Re: Linq problem - kako spojiti upit... 26.12.2014. u 11:00 · pre 144 meseca #12
Zašto ako posle grupisanja podataka uradim orderby

var group_part = where.GroupBy(a => a.Gradovi.Id_mesto);

orderby_part = group_part.Select(o => new { id = o.Key, NazivGrada = o.OrderBy(c => c.StatusTiketa.NazivStatusa) });


dobijam grešku u delu

var keyEmplist = (from IGrouping<int, Vezbe_sa_DIV.EF.Tiket> dat in query2 select dat).ToList();

greška je

Unable to cast the type 'Anonymous type' to type 'System.Linq.IGrouping`2'. LINQ to Entities only supports casting EDM primitive or enumeration types.

??
Re: Linq problem - kako spojiti upit... 26.12.2014. u 11:14 · pre 144 meseca #13
Pa rasturio si grupisanje sa selectom, rezultat selecta nije IGrouping vec tvoj anonimni objekat.

Imaj u vidu da je C# strong-typed, cak iako se tvoj objekat slaze po imenima polja ne znaci da je ista klasa.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 26.12.2014. u 12:15 · pre 144 meseca #15
Vrlo slabo mozemo da ti pomognemo jer kacis samo nepovezane delove koda.

Al btw ovo je potpuno besmisleno:

(from IGrouping<int, Vezbe_sa_DIV.EF.Tiket> dat in query2 select dat).ToList();


dobijas isto i sa dat.ToList()

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 26.12.2014. u 12:47 · pre 144 meseca
izmenjeno 1 put, poslednji put mmix 26.12.2014. u 15:15
  1. mmix26.12.2014. u 15:15zapis iz teksta poruke
#16
ok...evo koda...

Code (csharp):

var where = baza_kon.Tikets.Where(a => a.Aktivan == 1);

 if (!String.IsNullOrEmpty(status))
            {

                if (status != "sve")
                {
                    where = where.Where(a => a.StatusTiketa.NazivStatusa == status);

                }
                         
               
            }

            System.Linq.IQueryable orderby_part = null;

            if (!String.IsNullOrEmpty(Grupisi))
            {
                ViewBag.grupisi = "1";

                if (Grupisi == "ms.NazivGrada")
                {
                 
                    var group_part = where.GroupBy(a => a.Gradovi.Id_mesto);

                    orderby_part = group_part.OrderBy(a => a.Key);

                                     
                }

                if (Grupisi == "vr.NazivVrsteRada")
                {
                    var group_part = where.GroupBy(a => a.VrsteRadova.Id_vrste_rada);

                    orderby_part = group_part.OrderBy(a => a.Key);

                }


            }

            else

            {

                ViewBag.grupisi = "0";

                var group_part = where.GroupBy(a => a.Id_tiket);

                orderby_part = group_part.OrderBy(a => a.Key);

               
            }


           var query2 = orderby_part;
           
           
            var keyEmplist = (from IGrouping<int, Vezbe_sa_DIV.EF.Tiket> dat in query2  select dat ).ToList();


            return View("FormResults", keyEmplist);

}


}
 


U bilo kom groupb pokušavam da kreiram orderby po nekoj drugoj koloni osim Key

možda je malo nepregledno kodirano ..ali radi..

ako neko ima predlog...

Molim pomoć...
Re: Linq problem - kako spojiti upit... 26.12.2014. u 15:10 · pre 144 meseca #17
Postoji i elegantniji nacin za sve ovo...

Ajd pogledacu danas ako uhvatim malo vremena da ti dam par saveta.


Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 26.12.2014. u 22:05 · pre 144 meseca #19
Code (csharp):


     var queryX = from a in baza_kon.Tickets
                          where a.Aktivan == 1
                          select a;

     Expression<Func<Ticket, bool>> statusFilter = a => true;
     if (!String.IsNullOrEmpty(status)) statusFilter = a => a.StatusTiketa.NazivStatusa == status;

     queryX = queryX.Where(statusFilter);
     
     ViewBag.grupisi = "0";
     Expression<Func<Ticket, int>> groupFilter = a => a.Id_tiket;
     if (!String.IsNullOrEmpty(Grupisi))
     {
        ViewBag.grupisi = "1";
          if (Grupisi == "ms.NazivGrada") groupFilter = a => a.Gradovi.Id_mesto;
          if (Grupisi == "vr.NazivVrsteRada") groupFilter = a => a.VrsteRadova.Id_vrste_rada;
     }
     
     var keyEmplist = queryX.GroupBy(groupFilter).OrderBy(a => a.Key);

     return View("FormResults", keyEmplist);
 


probunari malo po ovome pa pitaj sta ti nije jasno.

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Linq problem - kako spojiti upit... 26.12.2014. u 22:15 · pre 144 meseca #20
Svaka čast! Nemam šta da kažem!

Jedino me brine kako da napravim order , ali po nekoj drugoj koloni osim Key -a kada grupišem...

Poz
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme