1. LINQ
    1. 為 IEnumerable 介面鎖定義的集合擴充
      1. 其泛型版本為 IEnumerable<T>
    2. 核心命名空間
      1. System.Collections.Gereric
      2. System.Linq
    3. 可讀取資料來源
      1. 資料庫
        1. LINQ to ADO.NET
          1. LINQ to SQL
          2. LINQ to DataSet
      2. 陣列/集合物件/文字檔
        1. LINQ to Objects
          1. System.Collection
      3. XML文件
        1. LINQ to XML
          1. System.Xml.Linq
      4. Entity Framework
        1. LINQ to Entites
    4. 程式碼範例
      1. "方法" 與 "運算子" 的寫法
        1. IEnumerable<string> enumWeek = weekDayList.Where( weekDay => weekDay.StartWith("T"));
        2. IEnumerable<string> enumWeek= from weekDay in weekDayList where weekDay.StartWith("T") select weekDay;
      2. SQL 與 LINQ 的寫法
        1. SELECT BookTitle FROM Book WHERE BookTitle LIKE '%ASP.NET%';
        2. var enumQuery = from book in db.book where book.BookTitle.Contains("ASP.NET") select book;
    5. LINQ 所查詢出來的結果都必須由 IEnumerable<T> 型態的變數接收其結果
      1. 亦可用 var 宣告的變數皆收
    6. 基本架構
      1. 起始
        1. from
      2. 必備
        1. in
      3. 條件判斷
        1. where
        2. orderby
        3. join
      4. 結尾
        1. select
        2. group
  2. 委派
    1. 正規
      1. class Program { static void Main(string[] args) { Program pg = new Program(); helloDelegate myHelloDelegate = new helloDelegate(pg.ReturnMessage); string message = myHelloDelegate("Projoe"); Console.WriteLine(message); Console.ReadKey(); } public string ReturnMessage(string pName) { return "Hello," + pName; } public delegate string helloDelegate(string pName); }
    2. 匿名
      1. class Program { static void Main(string[] args) { Program pg = new Program(); helloDelegate myHelloDelegate = delegate(string pName){ return "Hello," + pName; }; Console.WriteLine(myHelloDelegate("Projoe")); Console.ReadKey(); } public delegate string helloDelegate(string pName); }
  3. 取代舊有的資料存取技術
    1. 可盡量避免程式開發人員使用 SQL CMD的機會
    2. 達到更好的分層架構
  4. 實體資料模型(EDM)
    1. 利用 ADO.NET建立資料模型(類別)
    2. 利用 XML 產生 類別 與 資料表 的對應關係
    3. 示意圖
      1. 資料存取程序
      2. EDM
      3. 資料庫
  5. 存取資料庫程序
    1. 建立 實體資料模型(*.edmx,也是 XML 類型檔案)
    2. 針對模型建立實體類別(class)
    3. 設計客端程式,透過 LINQ 或 Entity SQL 操作實體類別
    4. 示意圖
      1. 資料存取程序
      2. xxx.Designer.cs(class)
      3. xxx.edmx(XML)
      4. 資料庫