程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#高級程序設計(十)——LINQ

C#高級程序設計(十)——LINQ

編輯:C#入門知識

LINQ統一了數據訪問方式,它是程序語言與數據之間的橋梁。LINQ框架如圖所示:它主要由三部分組成:語言擴展、LINQ構建塊和提供程序集。
\

對於如下代碼:
varquery = from book in SampleData.Books
where book.Title == "Funny Stories"
orderby book.Title
select new {book.Title, book.Price};  
       它等價於:
varquery = SampleData.Books
.Where(book => book.Title == "Funny Stories")
.OrderBy(book => book.Title)
.Select(book => new {book.Title, book.Price});
編譯器會將其轉換為如下的調用:
       IEnumerable<double> query = Enumerable.Select<int,double>(
Enumerable.OrderBy(\
Enumerable.Where(
SampleData.Books,
book => book.Title == "Funny Stories"),
                     book => book.Title),
book => new {book.Title, book.Price});
LINQ很多方法定義在System.Linq.Enumerable類中,這些方法都被實現為擴展方法。
.NET中實現了IEnumerable<T>接口的對象成為可迭代對象,可迭代對象會返回一個迭代器(實現了IEnumerator<T>接口的對象),通過迭代器就可以對可迭代對象進行遍歷。
Enumerable類中的一些擴展方法接受IEnumerable<T>類型的參數並返回IEnumerable<T>的結果,因此在處理過程相當於過濾器的作用。這些方法只返回可迭代對象,並不返回查詢的結果,只有對可迭代對象進行調用時(例如foreach)查詢操作才會執行,這是LINQ很重要的一個特性——延遲查詢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved