LINQ以及LINQ to Object 和LINQ to Entities

LINQ的全稱是Language Integrated Query,中文譯成「語言集成查詢」,是一種查詢技術。sql

LINQ查詢經過提供一種跨各類數據源和數據格式使用數據的一致模型,簡化了查詢過程。LINQ查詢分爲對內存對象的查詢(LINQ to Object)、對SQL Server數據庫的查詢(LINQ to SQL)、以及對由ADO.NET實體框架建立的實體集進行查詢(LINQ to Entities)等(LINQ to DataSet、LINQ to XML)。數據庫

  LINQ to Object:繼承IEnumerable或IEnumerable<T>接口,無須使用LINQ提供程序或API。全部的操做都是在內存中進行的。 編程

  LINQ to SQL:繼承IQueryable或IQueryable<T>接口,在LINQ to SQL中,把關係型數據庫的數據模型映射到開發人員所用的編程語言表示的對象模型。僅支持sql server 數據庫緩存

  LINQ to Entities:繼承IQueryable或IQueryable<T>接口,LINQ to Entities是Entity Framework的一部分而且取代LINQ to SQL做爲在數據庫上使用LINQ的標準機制。Entity Framework是行業領先的對象―關係映射(ORM)系統,能夠和多種數據庫一塊兒使用,並支持各類靈活、複雜的數據模型。LINQ to Entities做爲Entity Framework的一部分,它能夠使用Entity Framework數據模型來執行LINQ查詢。當應用程序運行時,LINQ to Entities會將對象模型中的語言集成查詢轉換爲SQL。而後將它們發送到數據庫進行執行。當數據庫返回結果時,LINQ to Entities會將它們轉換回開發人員所用的編程語言處理的對象。框架

  LINQ to Entities的技術原理:程序會把查詢表達式先緩存到表達式樹中,只有當真正獲取數據的時候,纔會由IQueryProvider解析表達式樹,生成sql語句執行數據庫查詢操做  編程語言

LINQ查詢表達式分爲兩種:ide

一.查詢語法:spa

eg:var query=from b in arr where (b=>b>0) select bserver

二.查詢方法:對象

eg:var query=arr.where(b=>b>0).select(b=>b)

*查詢語法最終被編譯成查詢方法

相關文章
相關標籤/搜索