Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Linq kreiranje "pivot -a"

[es] :: .NET :: ASP.NET :: Linq kreiranje "pivot -a"

Strane: 1 2

[ Pregleda: 7127 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

patak_daca

Član broj: 72199
Poruke: 418
*.static.isp.telekom.rs.



+1 Profil

icon Linq kreiranje "pivot -a"31.03.2015. u 13:41 - pre 110 meseci
Pozdrav!

U upitu

Code:
var queryX = from a in Tikets
 join pm in VrsteRadovas on a.Id_vrste_rada equals pm.Id_vrste_rada
 where a.Aktivan == 1 && a.Id_statusa_tiketa != 2                  
 group new { a,pm } by new { a.Id_vrste_rada, pm.NazivVrsteRada, a.DodeljenKorisniku }  into g       
                        
select new
    {
        Count=g.Key.Id_vrste_rada,
    Vrsta_rada=g.Key.NazivVrsteRada,
    Radnik=g.Key.DodeljenKorisniku,
    Broj=g.Count()
       
    };

queryX.ToList();
            
        
var aa = from b in queryX  group b by b.Vrsta_rada into g
            

select new
    {

     Name = g.Key,
     Korisnik1 = g.Where(c => c.Radnik.Equals("Korisnik1")).Select(c => c.Broj),
     Korisnik2 = g.Where(c => c.Radnik.Equals("Korisnik2")).Select(c => c.Broj)

    };

aa.ToList();

aa.Dump();



Kako da Korisnk1 , Korisnik2... ne moram da unosim nego da na osnovu prvog upita preko neke loop ili nečeg
automatski kreira kolone jer već imam te podatke u "DodeljenKorisniku " ?

Hvala!

Patak
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 15:53 - pre 110 meseci
Mozda neki predlog....
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 16:58 - pre 110 meseci
To je Pivot, i koliko znam nema boljeg nacina jer se ne moze kreirati klasa sa dinamickim brojem polja. Ono sto mozes je da imas Neki KeyValuePair<string, int> u koji ces upucati variabilan broj korisnika sa countovima pa onda na view strani to rzvuces u varijabilan broj vizuelnih kolona.
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ć
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 17:44 - pre 110 meseci
Pozdrav!

Hvala puno!!

a taj keyValuePair da popunim u " Select new " ili nekako drugacije?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 18:11 - pre 110 meseci
Da. Sa tim sto ces morati da radis select u select-u da bi zadrzao top level grupisanje po Vrsti rada . Dakle nesto tipa


Code (csharp):

select new
     {

      Vrsta_rada = g.Key,
      Korisnici =
            from r in g
            group by r.Radnik into gr
            select new KeyValuePair<string, int>(gr.Key, gr.Count)
     };
 

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ć
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 18:22 - pre 110 meseci
Hvala puno!

 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 19:39 - pre 110 meseci
Pozdrav!

Jel može pomoć...

Kako da ubacim gr.Count da ima vrednost Broj iz prvog upita ?

Hvala!!
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 20:10 - pre 110 meseci
Onda ne grupises u gr nego samo selektujes keypair(r.radnik, r.broj)
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ć
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"31.03.2015. u 20:29 - pre 110 meseci
Pa da..to je to..

Hvala puno!!

 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.static.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"01.04.2015. u 11:58 - pre 110 meseci
Pozdrav!

Kada hoću da podatke "ubacim" u model

Model:

Code:
namespace Vezbe_sa_DIV.Models
{
    public class IzvestajPoRadniku
    {


        public string Name { get; set; }
        public IEnumerable<Stavke> Korisnici { get; set; }
       
       
}
public class Stavke
{
    public int  Broj {get;set;}
    public string Radnik {get;set;}
  
   
  
   
}
}


Linq upit:

Code:
select new IzvestajPoRadniku
                      {
                          Name = g.Key,

                          Korisnici = from r in g 
                                      
                                      select new Stavke { KeyValuePair<int, string>(r.Broj, r.Radnik)}
                      };


Dobijam grešku....

Molim za pomoć!

Patak
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.static.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"01.04.2015. u 13:45 - pre 110 meseci
Neki predlog....
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12849



+4784 Profil

icon Re: Linq kreiranje "pivot -a"01.04.2015. u 13:51 - pre 110 meseci
Ovaj deo ti je neispravan:
Code:
select new Stavke { KeyValuePair<int, string>(r.Broj, r.Radnik)}

Treba
Code:
select new Stavke { Broj = r.Broj, Radnik = r.Radnik}


[Ovu poruku je menjao Shadowed dana 02.04.2015. u 10:54 GMT+1]
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"01.04.2015. u 18:00 - pre 110 meseci
Pozdrav!

Hvala puno!!
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.static.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 10:36 - pre 110 meseci
Pozdrav!

Kada uradim Pivot na ovaj način pojavi se različit broj kolona jer
nije svaki radnik uradio iste poslove, pa se plašim da nije moguće dobiti Pivot ako ne znamo
koliko ima kolona....

Ako neko ima predlog i pomoć....

Patak
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 11:11 - pre 110 meseci
Onda moras malo da uradis iz vise koraka. Moras prvo da napravis distinct listu svih prisutnih radnika u sors listi i da onda radis outer join izmedju tvoje liste i te liste i da ubacis 0 tamo gde ne postoji radnik


Primeri outer joina u linq-u.
https://msdn.microsoft.com/en-...io/ee908647.aspx#leftouterjoin


Odmah da ti kazem EF.NET je glup za ovo. Napravice ti stotine SQL poziva. Najbolje je da sors listu ucitas preko EF.NET u neki array ili list i da onda koristis Linq na in-memory objektima.


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ć
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.static.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 11:22 - pre 110 meseci
Pozdrav!

Hvala puno1

I ja sam hteo da prvo uradim distinct radnika i da ih učitam preko loop-a u Select new... ali to ne može..

Probaću tvoj primer..

Hvala!

Patak
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 19:59 - pre 110 meseci
Pozdrav!

Molim za pomoć...

U "aa" imam grupisane podatke vrsti posla o radnicima koji su radili te poslove..

U "bb" imam listu radnika ( distinct ) iz liste "aa"....

Kako da u "Korisnici" dodam radnike koji nisu radili taj posao i dodelim im "broj"=0

Probao sam po mmix - ovom predlogu ali mi ne ide....

evo code

Code:
var queryX = from a in Tikets
                          join pm in VrsteRadovas on a.Id_vrste_rada equals pm.Id_vrste_rada
                          where a.Aktivan == 1 && a.Id_statusa_tiketa != 2
                         

                          group new { a, pm } by new { a.Id_vrste_rada, pm.NazivVrsteRada, a.DodeljenKorisniku } into g

                          select new 
                          {
                              Count = g.Key.Id_vrste_rada,
                              Vrsta_rada = g.Key.NazivVrsteRada,
                              Radnik = g.Key.DodeljenKorisniku,
                              Broj = g.Count()

                          };

             queryX.ToList();
             
var aa = from b in queryX

                      group b by b.Vrsta_rada into g

                      select new 
                      {
                          Name = g.Key,

                        Korisnici = from r in g

                                    select new  { Broj = r.Broj, Radnik = r.Radnik }


                      };
                      
                      
var bb =  from p in Tikets 

         group p by p.DodeljenKorisniku
         
         into radnici         
                 
        select new
    { 
    
    radnici=  radnici.Key == null ? "(Nedodeljen)" : radnici.Key  
    
    }
 

;        
    
bb.ToList();

aa.Dump();


Molim za pomoć..

Patak
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 20:42 - pre 110 meseci
može i neki predlog...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Linq kreiranje "pivot -a"02.04.2015. u 22:17 - pre 110 meseci
nakon sto dobijes queryX u listi uradis sledece:

Code (csharp):

    var radnici = queryX.Select(k => k.Radnik).Distinct().ToArray();
             
    var output = from a in queryX
                 group a by a.Vrsta_rada into gr
                 select new { Vrsta_rada = gr.Key, Radnici = from r in radnici
                                                       join a in gr on r equals a.Radnik into rjouter
                                                      select rjouter.Sum(b => b.Broj)
                 };

    var model = new { radnici, output };
    model.Dump();
 


Dobices model sa spiskom kolona za pivot tabelu i onda grupisanu listu vrednosti unutar svake vrste rada izlistano po imenima radnika:


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ć
Prikačeni fajlovi
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Linq kreiranje "pivot -a"03.04.2015. u 17:06 - pre 110 meseci
Pozdrav!!

Hvala puno!!
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Linq kreiranje "pivot -a"

Strane: 1 2

[ Pregleda: 7127 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.