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伺服器架設在美國後,中國開發人員頻繁進行的一些操作變得非常緩慢,本來通過追溯 歷史便可找出原因的問題,卻因為網速緩慢,導致開發者將大量的時間...