語言整合查詢(
linq)是
visual studio2008
中引入的一組功能。
可為c# 和 visual basic 語言語法提供強大的查詢功能。
linq引入了標準易學的資料查詢和更新模式,能夠擴充套件該方法來支援不論什麼型別的資料儲存。 visual studio 包含 linq 提供程式集,後者支援將 linq 與.net framework 集合、sql server 資料庫、ado.net 資料集和 xml 文件結合使用。
在linq
查詢中。能夠使用同樣的基本編碼模式來查詢和轉換
xml文件,
sql資料庫,
ado.net
資料集以及其它格式的資料。總的說是下面三部分
看完了主要的架構圖我們就來看看
linq
給我們提供的查詢操作吧。
以下我們就來做個初體驗。
在沒有linq
前,我們這樣查詢
從number陣列中提權耦並降序排列
int numbers = newint ;
listeven= new list();
foreach (int numberin numbers)}
even.sort();
even.reverse();
有了linq
我們這樣查詢
以上的查詢使用了lamdba的方法。
以下我們演示怎樣使用原始碼查詢的三個部分
class introtolinq;
// 2. 建立查詢
// numquery is anienumerablevar numquery =
from num in numbers
where (num % 2) == 0
select num;
// 3. 執行查詢.
foreach (int num in numquery)
",num);}}
}
注意:
select
中的num
為查詢變數
在linq中,查詢的執行與查詢本身截然不同;換句話說,假設僅僅是建立查詢變數,則不會檢索不論什麼資料。
上乙個例項中查詢從整數陣列中返回全部偶數。
該查詢表示式包括三個字句。from
。where
,select
(這些字句的順序與
sql中的順序相反
).from
指定查詢的資料來源。
where
字句應用篩選器。
select
字句制定返回的元素型別。linq 中,查詢變數本身不執行不論什麼操作而且不返回不論什麼資料。
它僅僅是儲存在以後某個時刻執行查詢時為生成結果而必需的資訊
延遲執行
如前所述,查詢變數本身僅僅是儲存查詢命令。
實際的查詢執行會延遲到在 foreach語句中迴圈訪問查詢變數時發生。 此概念稱為「延遲執行」。以下的演示樣例對此進行了演示:
// query execution.
foreach (int num innumquery)
", num);
}
該執行方法才會呼叫上面的查詢方法。而且有多少個資料執行多少次的查詢操作。迭代變數num 儲存了返回的序列中的每乙個值(一次儲存乙個值)。
以上是對
linq
的開篇介紹。linq查詢表示式的基本構成,當中涉及到了延遲載入。
說道這個延遲載入,整的非常神奇一樣。看透了也僅僅是乙個執行時的方法呼叫。興許介紹
linq
的物件查詢。
每乙個物件查詢中都少不了託付泛型。以及匿名函式和
lamdba
的寫法。所以他們是相輔相成的。
Linq系列教程一 Linq介紹
前言 許多朋友在編寫以資料庫為中心的應用程式是時常會因為呼叫資料庫以及維護資料的關係等而煩惱,繁雜的sql字串語句,sql注入檢測,語法,字元長度等,有些時候為了在程式上更方便使用還要寫一些看似不重要只為了方便的儲存過程。現在好了從.net framework 3.5版本開始我們可以使用物件導向的方...
帶你玩轉Visual Studio 開篇介紹
本人從事c 開發工作一年半,總想就c 開發方面寫點東西。寫什麼呢?想了一下還是寫點跟開發密切相關的吧,要說跟開發最密切相關的那莫過於就是開發工具了,也就是常常說的整合開發環境 ide 這一年多從事的是c 的跨平台開發,在linux和windows下都開發過,但主要還是在windows下進行開發 一般...
NodeJS開篇介紹 環境安裝
nodejs這門程式語言是當時帶我做專案的一名oracle架構師帶我入坑的.第一次接觸這種非同步程式語言真的非常的不適應,因為在不了解語言特性的情況下,你不清楚程式執行到哪,怎麼控制程式的執行順序,這和我們一般寫同步式 完全不同,所幸後面 質量稍微變高了點,也有一些心得體會,再加上用nodejs的場...