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

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

[es] :: .NET :: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad

[ Pregleda: 1444 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikelly

Član broj: 16730
Poruke: 389
77.222.12.*



Profil

icon Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad11.09.2008. u 14:19 - pre 190 meseci
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.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad11.09.2008. u 14:42 - pre 190 meseci
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();

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

Mikelly

Član broj: 16730
Poruke: 389
78.155.41.*



Profil

icon Re: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad14.09.2008. u 10:01 - pre 190 meseci
E, znam za LINQ, a reci mi molim te, mada pretpostavljam da ne treba, trebam li imat VS2008, ili to sve radi sa VS2005 i 3.5 Framework-om?

I znas li kad izlazi ovaj novi ADO.NET EF?

Pozdrav.

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad14.09.2008. u 10:25 - pre 190 meseci
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.


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

[es] :: .NET :: Konkretan problem, ali mi se otvorise pitanja, pogledajte ako imate kad

[ Pregleda: 1444 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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