LINQ to Object初體驗(使用物件取代二維陣列作資料篩選)

VS2008裡面有個神奇的東西,稱之為LINQ,可以透過相同的語法方式來處理各式各樣的資料(SQL,XML,Object,...),小喵此次初體驗感受一下這個東西,真的很好用,初體驗來做個簡單的測試,請看小喵娓娓道來

 

VS2008裡面有個神奇的東西,稱之為LINQ,可以透過相同的語法方式來處理各式各樣的資料(SQL,XML,Object,...),小喵此次初體驗感受一下這個東西,真的很好用,初體驗來做個簡單的測試,請看小喵娓娓道來

先來看一張LINQ的架構圖(資料來源:曹祖聖老師在TechEd2007的簡報)

要看完整的請點選上面的圖檔,從這張圖來看LINQ可以用來取得相當多的資料,而只要資料能夠用程Object的形式,就能夠透過LINQ來存取

接著就開始這次的初體驗

先說明一下小喵要做的:小喵弄個座位表格,分別有--SeatId(座位代號),SeatName(座位名稱)
然後產生測試資料200個座位資料,SeatName(座位名稱)用亂數產生a-z的字母加上SeatId當作是座位名稱,最後用個介面來測試使用LINQ篩選資料(找字頭相同的)

這樣的題目以前小喵在ASP都是用二維陣列來做,在.NET裡面則是可以用物件的方式取代二為陣列

先建立座位的物件如下:

 

接著設計畫面如下

 

產生的資料放在GridView1,篩選後的資料放在GridView2

接著撰寫產生資料的部分

然後就是我們的重點來了,在這些資料中,想要找SeatName(座位名稱)a開頭的資料,以前小喵可能會用個迴圈逐筆查,但是有了LINQ,就可以寫成以下這樣

各位可以發現,用這樣超短的程式碼就能夠做到篩選。真是太好了

熟悉T-SQL的朋友,您接著就可以想像以前T-SQL裡面的Grou By,Distinct,Order By等等都可以再物件裡面玩,甚至可以透過JOIN,把不同的物件資料作關聯之後來取資料。真是神奇啊。

這次的初體驗只是約略的感受一下LINQ的威力,此次的例子只是兩個欄位,一個條件的篩選,各位可以試想一下,如果應用在很多欄位,並且結合其他的資料(LINQ可以使用JOIN)並且使用多重條件的篩選,那麼可以節省多少的程式碼就能夠達到相同的目的。未來有其他的測試再與大家分享。

^_^

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat