Novo

Forum kao aplikacija na telefonu

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

  • 4 odgovora
  • 3.451 pregleda

Najnovija ↓

Dodavanje itema u SelectList 15.05.2015. u 17:20 · pre 139 meseci #1
Pozdrav!

Kako da u

Code:
var lista = new SelectList(from a in baza_kon.Users
                                        join ms in baza_kon.Memberships on a.UserId equals ms.UserId
                                        where ms.IsApproved == true
                                        select a, "UserName", "UserName");


dodam još nekoliko itema ?

Hvala!

Re: Dodavanje itema u SelectList 15.05.2015. u 17:45 · pre 139 meseci
izmenjeno 1 put, poslednji put Shadowed 16.05.2015. u 00:25
  1. Shadowed16.05.2015. u 00:25zapis iz teksta poruke
#2
Code:

List<User> UsersList = (from a in baza_kon.Users
                                        join ms in baza_kon.Memberships on a.UserId equals ms.UserId
                                        where ms.IsApproved == true
                                        select a).ToList();
UsersList.Add(new User() { Name = "Pera" } );
UsersList.Add(new User() { Name = "Mika" } );
UsersList.Add(new User() { Name = "Laza" } );

SelectList lista = new SelectList(UsersList);
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: Dodavanje itema u SelectList 16.05.2015. u 02:47 · pre 139 meseci #4
Hajd' da napisem i malo detalja.. Mozda bude od koristi, tebi ili nekom drugom.

Samo cu prethodno pojednostaviti primer (manje kucanja i lakse za kapiranje) tako sto cu izbaciti join i pretpostaviti da je IsApproved property klase User.

U tom slucaju bi pocetni primer bio:

Code:
var lista = new SelectList(from a in baza_kon.Users where u.IsApproved == true select a, "UserName", "UserName");


Ovo se prilikom kompajliranja prevodi na sledeci oblik:

Code:
SelectList lista = new SelectList(baza_kon.Users.Where(u => u.IsApproved), "UserName", "UserName");


(Select deo je nebitan posto se selektuje ceo User objekat)

E sad, SelectList trazi IEnumerable u konstruktoru.
baza_kon.Users.Where(...) vraca IQuerable<User> pri cemu IQuerable<T> nasledjuje IEnumerable<T> (koji nasledjuje IEnumerable).
Zbog toga se taj rezultat moze proslediti direktno konstruktoru.

U onom mom primeru resenja dobijeni rezultat konverujemo u List<User> koji podrzava dodavanje elemenata i onda mu jednostavno dodajemo nove User objekte kao sto je prikazano.
Posto List<T> implementira IEnumerable<T>, ta lista se moze direktno dati SelectList konstruktoru sto smo na kraju i uradili.



Naravno, ovo nije jedino resenje, moze se koristiti Union ili Concat u prvobitnom query-u.
Inace, predlazem koriscenje extension metoda direktno umesto preko sql-like query-a, lakse je za razumevanje a i kod je kompaktniji a i dalje citljiv (mozda cak i citljiviji).
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme