我們為什麼要擁抱Linq?

2021-07-27 03:37:31 字數 1773 閱讀 7308

linq:

源起:

.net的設計者在類庫中定義了一系列的擴充套件方法,方便使用者操作集合物件,這些擴充套件方法構成了linq的查詢操作符。

是什麼?

linq,語言整合查詢(language integrated query)是一組用於c#和visual basic語言的擴充套件。它允許編寫c#或者visual basic**以查詢資料庫相同的方式操作記憶體資料。

什麼時候用?為什麼用?有什麼好處?

參考:

優點:

1、無需複雜學習過程即可上手

2、編寫更少**即可建立完整應用。

3、更快開發錯誤更少的應用程式。

4、無需求助奇怪的程式設計技巧就可合併資料來源。

5、能夠大幅減少過程控制語句的**塊,使**的可讀性和可維護性大幅提高。

6、任何物件或資料來源都可以定製實現linq介面卡,為資料互動帶來真正方便。

怎麼用?

先看乙個簡單例子:

from n in arr where n < 5 orderby n descending select n;//小於5,並且倒敘排列顯示

對比與區分:

1、與lambda表示式,sql,hql例項對比:

lambda表示式:

public ilistgetlistbylinq()

sql(結構化查詢語言):

public ilistgetlistbysql()

hql(hibernate query language):執行hql語句例項,此處用createquery並設定引數用":",當然也可以拼接字串;

public ilistgetlistbyhql()

這樣看來,lambda表示式的寫法很簡單。

2、linq與lambda表示式什麼關係呢,舉個例子吧:

select sname,s***,class from student

linq:

from s in students

select new

lambda:

students.select( s => new )

lambda表示式可讀性強一些,可用於linq,但它不僅僅用於linq中,它的使用場景很廣滴。

3、linq與hql有什麼不同呢?

他們都是物件化查詢語言。hql得到一些orm的支援,如nhibernate等,以下是查詢方式:

linq: from c in ctx.customers select c

hql:from customers c

比較一下,區別還是有的,customers表資料持久化後產生乙個領域模型customers類,注意hql中customers是個領域模型;linq中的ctx是datacontext例項。

為什麼我們要放棄Subversion

subversion 曾經是我們親密無間的戰友,但自 從一年前部分團隊成員去了美國,我們和subversion的關係就開始出現了裂痕,首先是將subversion伺服器架設在美國後,中國開發人員頻繁 進行的一些操作變得非常緩慢,本來通過追溯 歷史便可找出原因的問題,卻因為網速緩慢,導致開發者將大量的...

我們為什麼要思考演算法

源頭 演算法 的中文最早出現在中國漢代的數學名著 周髀算經 中。周髀算經 卷上有 數之法出於圓方。圓出於方,方出於矩。矩出於九九八十一 意思是 算數的方法都出於對圓 對方的計算,其中圓出於方 圓形面積 外接正方形x圓周率 4 方出於矩 正方形源自兩邊相等的矩 矩的計算出於九九八十一 長乘寬面積的計算...

為什麼我們要放棄Subversion

subversion 曾經是我們親密無間的戰友,但自從一年前部分團隊成員去了美國,我們和subversion的關係就開始出現了裂痕,首先是將subversion伺服器架設在美國後,中國開發人員頻繁進行的一些操作變得非常緩慢,本來通過追溯 歷史便可找出原因的問題,卻因為網速緩慢,導致開發者將大量的時間...