LINQ資料查詢技術
Language-Integrated Query (LINQ)簡介 對Array、List、DataSet、XML、或SQL Server查詢指定資料的語言(類似 SQL語法) 必須使用C# 2008與 .Net framework 3.5以上版本 語法 如: IEnumerable<int> scoreQuery = from score in scores where score > 80 select score;
可查詢的對象 實作IEnumerable或IEnumerable<T>介面的集合物件,如Array、List 等 Object DataTable, DataSet XML SQL Array http://msdn.microsoft.com/zh-tw/library/system.array(v=vs.110).aspx
查詢Array
練習11-1 請完成上一頁投影片的程式碼
查詢Object
練習11-2 請完成上一頁投影片的程式碼
查詢DataTable DataTable http://msdn.microsoft.com/zh-tw/library/system.data.datatable(v=vs.110).aspx
練習11-3 請完成上一頁投影片的程式碼
隱含型別 不須在程式中明確指定資料型別,編譯器會在編譯時才指定型別。 其型別由等號右邊的值型別所決定 使用 var 變數有個基本前提:一定要給初始值。否則編譯時會出 現錯誤:Implicitly-typed local variables must be initialized。 int i = 10; var j = 10; http://msdn.microsoft.com/zh-tw/library/dn467616.aspx
匿名型別 匿名型別提供便利的方式將唯讀屬性集封裝至單一物件,而不必 先明確定義型別。 型別名稱是由編譯器產生。 每個屬性的型別 是由編譯器推斷。您可以使用 new 運算子搭配物件初始設定式來 建立匿名型別。 result的型別是<>f__AnonymousType0`2[System.Int32,System.String] result裡面有兩個屬性,第一個型別為System.Int32,第二個型別為 System.String,這就是上面所說,屬性的型別由編譯器推斷。 result的型別是<>f__AnonymousType0`2[System.Int32,System.String]這樣的東西,這是編譯器所產生的型別名稱,可以當做是暫時產生的名字,因為一出方法界限,又或者可以說這個變數的生命週期結束,這個型別就失去『使用上』的意義。 匿名型別與其他的reference type並無不同。從型別名稱上還可以看到,裡面有兩個屬性,第一個型別為System.Int32,第二個型別為System.String,這就是上面所說,屬性的型別由編譯器推斷。
練習11-4 請完成上一頁投影片的程式碼,並觀察result 及 result.ID和 result.Name的資料型態
查詢Object以var修改
練習11-5 請完成上一頁投影片的程式碼
查詢DataTable以var修改
練習11-6 請完成上一頁投影片的程式碼