Novo

Forum kao aplikacija na telefonu

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

Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad

  • 3 odgovora
  • 1.890 pregleda

Najnovija ↓

Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad 11.09.2008. u 15:19 · pre 220 meseci #1
Poceh da radim neku malu aplikaciju, citam podatke iz .csv fajla pa trpam u dataset pa onda u bazu, ali jos bazu nisam napravio, tek sam poceo.

Sad imam konkretan problem. Imam dataset koji sadrzi odredjen broj redova, i treba mi da iz citave tabele izvucem samo neke vrijednosti koje se ne ponavljaju. Kao npr. u SQL-u "SELECT DISTINCT UserName FROM Tabela".

Da li to mogu da odradim koriscenjem datatable objekta? Probao sam Select() i Compute() metodama, ali mi ne ide... Ne znam ni da li to uopste moze... Moze naravno pjeske da prolazim kroz zapise jedan po jedan.

Ali sam onda krenuo na drugi nacin, i tu mi se otvorise pitanja. Napravio sam listu zapisa:

Code:

List<DataSet1.DataRow> = new List<DataSet1.DataRow>();


pa sam probao koriscenjem Exist() metode koja zahtijeva predikat.

Prvo pitanje: Predikat mora da ima samo jedan argument i taj agument mora biti onog tipa kojeg je i lista? Ne moze imati dodatne argumente? Je li tako?

Drugo pitanje: Da li predikat mora biti static? Takva je definicija u helpu.

Ako je static, onda ne mogu da vrsim promjenljiva uporedjivanja tako da koristim exist() metodu unutar petlje, i u svakoj iteraciji vrsim drugacije uporedjivanje, jer u okviru predikta ako je static ne mogu bez da koristim standardno uporedjivanje. Evo, mozda bude jasnije. Prvo sa static:

Code:

private bool static ImaLiGa(DataSet1.DataRow r)
{
if(r.UserName == "Milos") return true;
else return false;
}


E sad bez static, ali ne znam da li ovo moze, oce li pravit kakve probleme:

Code:

private bool ImaLiGa(DataSet1.DataRow r)
{
if(r.UserName == user) return true;
else return false;
}


gdje je user promjenljiva iz viseg nivoa koju mijenjam u svakoj iteraciji, pa je vidljiva u prediktu, to ne bi bio slucaj da je predikat static.

Da li je ovaj runaround korektan, i da li postoji neko drugo rjesenje (ovo u vezi predikata)? I neki komentari u vezi listi, ako mozete, teh ih otkrivam...

Pozdrav.
Re: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad 11.09.2008. u 15:42 · pre 220 meseci #2
AKo koristis odgovarajuci framework mozes da iskoristis LINQ za ovo:

Code:

var un = (from DataRow t in ds.Tables["tabela"].Rows
          select t["polje"]).Distinct();

foreach (string user in un) Console.WriteLine(user);
          


Ovo je za netipizirani dataset, adaptiras za tipizirani ako treba.


PS> A mozes i u duhu "LINQ to DataSets" ekstenzija:

Code:

            var un = (from t in ds.Tables["tabela"].AsEnumerable()
                      select t.Field<string>("polje")).Distinct();
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: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad 14.09.2008. u 11:25 · pre 220 meseci #4
Treba ti vs2008, zapravo treba ti C#3.0 kompajler, kompajler u 2005 je 2.0 samim tim ne prepoznaje LINQ konstrukcije.


Inace ADO.NET Entity Framework je izasao, runtime je u .NET frameworku 3.5 SP1, dok su alatke u service packu 1 za visual studio 2008.

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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme