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

DataSet i podaci

[es] :: .NET :: DataSet i podaci

[ Pregleda: 1849 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.update4u.de.



+1 Profil

icon DataSet i podaci16.03.2009. u 14:47 - pre 183 meseci
Pozdrav svima,

imam Dataset, koji u sebi sadrzi podatke kao sto su ime i vriejdnost. Imena se ponavljaju ali vrijednosti ne.

Moze li mi neko reci kako cu iz tog Dataseta da pokupim samo imena koja se ne ponavljaju. Ako se ime ponavlja, vrijednost tre bam samo dodat na postojece ime.

Znaci imam:

OsobaA 4
OsobaA 23
OsobaB 3
OsobaA 5
OsobaB 65
OsobaA 12

Kako da dobijem:

broj jedinstvenih imena,

sve vrijednosti vrijednosti za svako ime, npr.

OsobaA 4,23,5,12
OsobaB, 3,65


Radim u C#...
Poz
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
91.150.124.*



+987 Profil

icon Re: DataSet i podaci16.03.2009. u 15:29 - pre 183 meseci
Jedno resenje sa LINQ-om:


Code:



string []Posebno = (from r in Tabela2.AsEnumerable()
                              select (string)r["Osoba"]).Distinct().ToArray<string>();

Grupe[] lista = (from r in Tabela2.AsEnumerable()
                        group r by (string)r["Osoba"] into tmp
                        select new Grupe(tmp.Key,
                                                  tmp.Select(s => (int)s["Vrednost"]).ToList<int>())).ToArray<Grupe>();





Pri tome je definisana struktura:

Code:

    struct Grupe
    {
        public string Osoba;
        public List<int> vrednosti;

        public Grupe(string x, List<int> y)
        {
            Osoba= x;
            vrednosti = new List<int>();
            vrednosti.AddRange(y);
        }
    }
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
91.148.81.*

ICQ: 20785904


+4 Profil

icon Re: DataSet i podaci16.03.2009. u 17:22 - pre 183 meseci
Code:

Hashtable tabelaImena = new Hashtable();
foreach (DataRow dr in tabela.Rows)
{
   if (dr.RowState != DataRowState.Deleted)
   {
       if (tabelaImena.ContainsKey((string)dr["ime"])
        {  
             (ArrayList)(tabelaImena[(string)dr["ime"]]).Add((int)dr["vrednost"]);
            }
       else
       {
           tabelaImena.Add((string)dr["ime"],new ArrayList());
           (ArrayList)(tabelaImena[(string)dr["ime"]]).Add((int)dr["vrednost"]);
       }
   }

}
ArrayList rezultat = new ArrayList();
foreach (object key in tabelaImena.Keys)
{
   StringBuilder sb= new StringBuilder((string)tabelaImena[key]);
   foreach (int br in (ArrayList)tabelaImena[key])
   {
      sb.Applend(" "+ br.ToString()+",");
   }
   rezultat.Add (sb.Trim(new char[]{','}).ToString());
}

eo jos jedna skica (ne treba .net 3.5). druga foreach petlja bi se mogla izbeci ako bi se u HashTable umesto parova (string, ArrayList), sadrzao parove (string,string)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: DataSet i podaci16.03.2009. u 20:35 - pre 183 meseci
@Igor, moze to i da se "ulepsa" malo kroz "Linq to DataSet" ;)
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

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.versanet.de.



+1 Profil

icon Re: DataSet i podaci16.03.2009. u 20:54 - pre 183 meseci
Pozdrav,

@salle

moze li jos malo pomoci? Compajler mi javlja gresku na ovoj liniji( i u if i u else diejlu)

(ArrayList)(tabelaImena[(string)dr["ime"]]).Add((int)dr["vrednost"]);

Error 2 'object' does not contain a definition for 'Add'
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.versanet.de.



+1 Profil

icon Re: DataSet i podaci16.03.2009. u 21:31 - pre 183 meseci
Ok, ovo sam jednostavno pretvorio u dva dijela i radi. Medjutim javlja se druga greska a to je cast odnosno na ovoj liniji::

StringBuilder sb= new StringBuilder((string)tabelaImena[key]);

Ovaj string cast ne valja, ali ne kontam sta dodje tu? Koji tip?
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
91.148.81.*

ICQ: 20785904


+4 Profil

icon Re: DataSet i podaci17.03.2009. u 00:49 - pre 183 meseci
jes ne valja... sorry

StringBuilder sb = new StringBuilder ((string)key);

a ovaj drugi red sto ti je javljao gresku bi trebalo da stoji verovatno (mrzi me da palim vs):

((ArrayList)(tabelaImena[(string)dr["ime"]])).Add((int)dr["vrednost"]);
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-a-2.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: DataSet i podaci17.03.2009. u 10:07 - pre 183 meseci
Pa zar nije lakše napisati sql (group by) upit koji će vratiti podatke, onako sabrano?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: DataSet i podaci17.03.2009. u 11:06 - pre 183 meseci
pa distinct je prost, ali agregacija stringova je slaba tacka SQL-a, morao bi da se uradi neki UDF koji bi "sabrao" drugu kolonu za parametar prve kolone i onda bi radilo.



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

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.versanet.de.



+1 Profil

icon Re: DataSet i podaci18.03.2009. u 20:44 - pre 183 meseci
Hvala Salle na odgovoru, radi sve.

@mmix : slazem se sa tobom

@toxi
query koji ja radim je neki customized query language odnosno tzv. A-SQL koji ne podrzava agregatne funkcije, osim count.
Jednostavno moram da se koristim njim, tako da je ovo za mene idealno rijesenje. Sve i da mogu SQL, ne bi bilo bas jednostavno, kao sto mmix rece..

Hvala u svakom slucaju svima
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.237.*



+987 Profil

icon Re: DataSet i podaci18.03.2009. u 21:27 - pre 183 meseci
@mmix

Evo malo lepse:

Code:

Console.WriteLine((from r in Tabela2.AsEnumerable()
                            select r["Osoba"]).Distinct().Count());


(from r in Tabela2.AsEnumerable()
  group r by r["Osoba"] into tmp
  select new {o=tmp.Key,v=tmp.Aggregate("",(av,s)=> {return  av+","+s["Vrednost"];}).Trim(',')})
.ToList()
.ForEach(s => Console.WriteLine(s.o+"  :  "+s.v+Environment.NewLine));


 
Odgovor na temu

[es] :: .NET :: DataSet i podaci

[ Pregleda: 1849 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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