Linq to Collections – Tagalized!

Ang blog na ito ay tungkol sa paggamit ng isang bagong feature ng Visual Studio.Net 2008 na kung tawagin ay LinQ.

Ang LinQ ay isang bagong paraan para kumuha at pumili ng data para sa ating .Net application. Language Integrated Query ang ibig sabihin ng LinQ. Ito ay magbibigay sa atin ng paraan para magsulat ng query, kasama ang ating code. At doon nakuha ang katagang Inetgrated.

Ang LinQ ay maaring kumuha ng data mula sa isang SQL Database, isang XML File o sa isang Collection. Sa demong ito ay ipapakita ako ang paggamit ng LinQ at ibang mga katangian nito. Makikita ang paraan ng paggamit ng LinQ sa SQL sa isa ko pang blog.

Gagawa ako ngayon ng isang simpleng application na magpapakita ng data mula sa isang class na tatawagin kong Person.cs, at ito ay gagamitin ko upang magkaroon ng isang collection na tatawagin kong People (maraming Persons eh, syempre people!)

image

Itatayp lamang ng gagamit ng application ang kahit na anong petsa sa textbox, at ilalabas sa grid ang data ng mga tao, na ang kapanganakan ay mas maaga kaysa sa petsang inilagay sa textbox.

Mapapansin na mayroon ding combobox sa application, gagamitin ko iyon para ipakita kung paano mag-bind ng data mula sa LinQ, patungo sa isang DropdownList.

image

Ang Person class ay isang simpleng object na may properties na Name at Birthday. Ito lamang ang kakailanganin ngayon para sa demong ito.

Gagawa ako ng isang bagong List na ang type ay Person at ang pangalan ay people. Pagkaraan ay maglalagay ako ng test data.

image

Ngayon naman ay gagawa ako ng isang Procedure na kukuha ng data ayon sa ating pangangailangan at ilalagay ito sa ating Grid. Pagkaraan ay tatawagin ko ng Procedure na ito mula sa Click event ng button1.

image

Ito ang "lumang" paraan na nakasanayan nating gamitin sa pagkuha at pagpili ng data. Ikakarga sa isang List<> ang mga object, at gagamit ng foreach para isa-isang basahin ang data, ikumpara sa petsang nakasulat sa textbox at ilagay ito sa isa pang collection na ang pangalan ay results. Pagkaraan nito ay gagamitin na ang results object para i-bind ang ating grid.

Ang paraan na ito, ay maayos ngunit kinakailangan pa nating sabihin lahat ng kailangang gawin. Kung gagamitin ang LinQ, ang code na ito ay magiging ganito:

image

Kahawig ng syntax ng SQL ang LinQ. Sinadya ito upang madali itong matutunan lalo na ng mga taong dati nang gumagamit ng SQL. At habang itinatayp ang code na ito, ay makikita ang intellisense support.

May ilang bagay tayong maaring mapansin sa ating code.

1. Ang paggamit ng var na keyword para magdeclare ng isang collection na ang pangalan ay result. Marahil ay napansin na hindi na isinulat kung ano ang datatype ng collection na result, ito ay dahil ang compiler na ng VS2008 ang mag-iisip o mag-iinfer ng data type nito, sa oras na isulat naman ang datatype ng Object na kanyang sasaluhin. Ito ang tinatawag na type inference.

2. Ang p na variable, ay wala ring datatype. Sa unang tingin, ang p ay wala ngang datatype tulad ng result. Sa pagkakataong ito, ginamit din natin ang type inferencing kung saan ang compiler na ang magdedsisyon kung anong datatype ang pinakatugma sa mga object na kanyang sasaluhin. sa pagkakataong ito, sa linyang "from p in people" ang magiging datatype ng p, ay kung ano man ang datatype ng people.

3. Ginamit ko ang DateTime object kahit hindi ito kasama sa LinQ. Ang LinQ ay isang query na kasama na sa language na iyong gagamitin kaya’t maari mong gamitin ang objects at keywords tulad ng DateTime, StartsWith, EndsWith atbp., sa LinQ mismo.

Ang resulta ng isang LinQ query ay isang object na IEnumerable kayat ito ay maaring i-bind sa isand object.  Gagamitin ko ngayon ang resulta ng ating LinQ query para lagyan ng laman ang ating combobox.

Idadagdag ko ang code na ito:

comboBox1.DataSource = result.ToList();
comboBox1.DisplayMember = "Name";

pagkaraang i-bind ang grid.

Ang LinQ query ay tinatawag ng compiler, sa twing gagamitin ito pangbind ng data. Ito ay mangyayari sa pagset mo ng Datasource property at sa Databind() method naman, para sa WebApplication.

Kayat sa puntong ito ng ating demo, dalawang beses magaganap ang pagkuha ng data, nung nag-set tayo ng Datasource property ng grid, at nang nag-set tayo ng DataSource property ng combobox. Ano ang kahalagahan ng kaalamang ito?

Halimbawang ang ating data ay nagbago sa pagitan ng dalawang pagtawag na ito, ang kukunin ng ating LinQ query, para sa ikalawang pagtawag nya ng data, ay ang pinakabagong set ng data na kanyang makikita.

Dadagdagan natin ang ating code para ilarawan ito:

image

Pansinin na nagdagdag ako ng isa pang tao, pagkaraan ko ginamit ang data para lagyan ng laman ang grid. At pagkatapos ko dagdagan ang data, ay tinawag ko ulit ang Datasource property kayat tatawagin ulit ang LinQ statement at kukunin ang pinakabagong data.

image

Mapapansing ang laman ng grid ay tatlo, ngunit ang laman ng combobox ay apat.

At iyan ang isang simpleng pagpapakita ng kung paano gamitin ang LinQ sa isang collection, at ilang mga bagong paraang maari na nating magamit sa VS2008.

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s