2014年4月16日 星期三

.NET LINQ 查詢太陽花水果

下午我在開發公司的產品系統,遇到一些 LINQ Lamba 動態查詢的需求(這個議題,我擇天會寫一篇專文介紹),所以先介紹一下LINQ Query,作為.NET程式設計師(不論是寫C#或VB)都應該知道LINQ查詢語言,而它也是我開發.NET數年最愛的技術之一,因為它的各種內部演算法都已由微軟實作好,通常我都會用 Lambd Expression 或 LINQ Query,如以下語法:
我們先建立 水果清單 …
有 香蕉、蘋果、芒果、香瓜、太陽花(今年台灣的名產)
   1: //建立水果清單



   2:            List<Fruit> Fruits = new List<Fruit>() 



   3:            { new Fruit { Id = 1, Name = "香蕉", Desc = "香蕉" }



   4:            , new Fruit { Id = 2, Name = "蘋果", Desc = "蘋果" }



   5:            , new Fruit { Id = 3, Name = "芒果", Desc = "芒果" }



   6:            , new Fruit { Id = 4, Name = "香瓜", Desc = "香瓜"}



   7:            , new Fruit { Id = 5, Name = "太陽花", Desc = "太陽花,是香蕉的一種^^"}



   8:            };




如果我想找出水果名有 “果”字的,我會用以下兩種方式

第一種 Lamba Expression


   1: //第一種 Lamba Expression



   2: var fruitResult1 = Fruits.Where(t => t.Name.Contains("果"));



第二種,LINQ Query (類似 SQL Style)

   1: //第二種,LINQ Query (類似 SQL Style)



   2:      var fruitResult2 = (from f in Fruits



   3:                          where f.Name.Contains("果")



   4:                          select f);




我們把結果列印至營幕


   1: //找出水果名有 “果”字的,我會用以下兩種方式



   2:           //第一種 Lamba Expression



   3:           var fruitResult1 = Fruits.Where(t => t.Name.Contains("果"));



   4:  



   5:           //Print search result to screen



   6:           Console.WriteLine("第一種 Lamba Expression");



   7:           foreach (Fruit fruit in fruitResult1)



   8:               Console.WriteLine(fruit.Name);



   9:  



  10:           //第二種,LINQ Query (類似 SQL Style)



  11:           var fruitResult2 = (from f in Fruits



  12:                               where f.Name.Contains("果")



  13:                               select f);



  14:  



  15:           Console.WriteLine();



  16:  



  17:           //Print search result to screen



  18:           Console.WriteLine("第二種,LINQ Query (類似 SQL Style)");



  19:           foreach (Fruit fruit in fruitResult2)



  20:               Console.WriteLine(fruit.Name);



  21:  



  22:           //Wait press any key



  23:           Console.ReadLine();




image


這樣很快的得到我們要的正確結果。


那麼如果有找出太陽花水果呢?


…..各位知道如何寫這段查詢語法吧?




   1: var fruitResult3 = Fruits.Where(t => t.Desc.Contains("太陽花"));



   2:           Console.WriteLine(" 查詢結果。。。今天程式寫累了。。");



   3:           foreach (Fruit fruit in fruitResult3)



   4:               Console.WriteLine(fruit.Name);



image

沒有留言:

張貼留言

如您對本文有任何建議或意見,歡迎您留下您寶貴的意見!