開發人員眼中的linq
微軟講師 張義先
在今年的三月份
,微軟發布了最新一代的開發平台
visual studio 2008.
在visual studio 2008
中提供了太多的新功能與新特性
.這些新功能與新特性都極大地提高了開發人員的效率.提到
visual studio 2008
的新特性就不得不說
linq,linq
的全稱是
language integrated query.
語言級整合查詢
.下面將詳細地介紹在
visual studio 2008
中如何使用
linq.
下圖是linq
的乙個整體的框架
.主要包括
linq to objects,linq to sql,linq to xml.
幾個方面
.下面會詳細講述
linq
的各種用法
先來看乙個
linq
查詢的例項
:
using
system;
using
system.linq;//
使用linq查詢的命名空間
static
class
helloworld
;
// 查詢字元長度小於5的字串
var shortwords =
from word in words
where word.length <= 5
select word;
// 列印字串
foreach (var word in shortwords)
console.writeline(word);
}
}
在visual studio 2008
中使用linq查詢,
系統會自動新增對
using system.linq
這個命名空間的引用
.上述的例項實現從陣列
words
中選取字元長度小於5的字串並將該字串列印出來.
仔細檢視一下linq查詢的語法,會發現linq查詢語句跟sql語句似曾相識.它是一種類sql的語言.使用var來定義變數是c#3.0中的新特性.使用它可以定義任何型別的變數.from,in,select,where
都是linq查詢的關鍵字.linq的查詢語法是from在前select在後.
如果沒有linq,使用其它的方式對陣列進行查詢就會比較的麻煩,使用linq可以提前編碼的效率.
下面將一步一步演示如何在visual studio 2008中使用linq查詢.
1)第一步需要新增乙個linq to sql classes檔案.使用linq to sql classes檔案可以自動完成資料表到實體的or/m對映.
2)第二步,把要查詢的資料表拖放到linq to sql classes檔案中,比如把資料庫adventureworks中的product表拖到到linq to sql classes檔案中,如下圖所示:
假定linq to sql classes檔案名字為northwind,那麼你檢視northwind.designer.cs檔案就會發現對映後的product表.
public
partial
class
northwinddatacontext : system.data.linq.datacontext
在這個檔案中包括對錶中每乙個欄位的對映,如
[column(storage="_productid", autosync=autosync.oninsert, dbtype="int not null identity", isprimarykey=true, isdbgenerated=true)]
public
int productid
set}
}
在visual studio 2008
中使用linq
非常的簡單
,下面將來實現乙個簡單的
linq例項.
新建乙個
web頁面
,然後在這個
web頁面上拖放乙個
datagrid 控制項,
使用linq
從對映後的資料表中查詢資料然後把這些資料填充到
datagrid中.
northwinddatacontext
northwinddatabase = new
northwinddatacontext();
this.gridview1.datasource = from product in northwinddatabase.products
where product.safetystocklevel > 800
select product;
this.gridview1.databind();
在這裡,重點介紹幾個類,這將對理解linq有很大的幫助.
datacontext
datacontext
型別(資料上下文)是
system.data.linq
命名空間下的重要型別,用於把查詢句法翻譯成
sql語句,以及把資料從資料庫返回給呼叫方和把實體的修改寫入資料庫。
datacontext
提供了以下功能:
1)以日誌形式記錄datacontext生成的sql
2)執行sql(包括查詢和更新語句)
3)建立和刪除資料庫
datacontext
是實體和資料庫之間的橋梁,
northwinddatacontext
就是繼承自datacontext,所以我們可以使用
northwinddatacontext
的物件對對映後的資料表進行查詢.
在上面的例項中,
就是從products
這張表中選取屬性
safetystocklevel 大於800的資料記錄:
from
product in northwinddatabase.products
where product.safetystocklevel > 800
select product;
查詢的如下:
下面來看乙個使用linq來操作xml的例項.
using
system;
using
system.linq;
using
system.xml;
using
system.xml.linq;
static
class
hellolinqtoxml
,
new ,
new
};
xelement xml = new xelement("books",
from book in books
where book.year == 2006
select
new xelement("book",
new xattribute("title", book.title),
new xelement("publisher", book.publisher)
)
);
console.writeline(xml);
}
}
生成的結果如下:
用來構建xml元素,並且可以使用linq以查詢的方式來得到xml元素的各個屬性.查詢語法還是經典的from in where select 組合.
linq to xml
允許資料能夠通過使用標準的查詢操作符來進行查詢.它能夠提供類似於xpath的導航.在各種層次的xml結點間進行導航.比如父結點和子結點,兄弟結點之間等.使用它比使用之前的dom來操作xml來得更簡單一些.
以上就是在visual studio 2008中使用linq的一點體會,後面還會有詳細的文章來介紹linq方面的內容.
IT開發人員
其路五 轉行到市場 絞盡腦汁的想想,我所知道的人之中只有兩個開發人員去了市場,這兩個人都不能說是朋友,認識而已。他們都是主動要求去了市場,結果是這兩個人均在市場都是乾到一年左右,然後都自已開公司了。呵呵,很奇怪,極高的轉行成功率!不過仔細想想,我對這兩個人的思路佩服的五體投地。能下決心仍掉每月5 6...
開發人員必讀
對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...
專案經理眼中優秀開發人員的標準
專案經理眼中優秀開發人員的標準 楊爭 作為專案經理,我希望我們專案的開發人員做到以下幾點 1 主動性 在專案中積極思考,主動提出自己的意見和看法。遇到問題主動尋求相關人員協助,主動溝通。2 bug修復及時 專案經理在專案計畫中通常會安排了bug的修復時間,以及在此基礎上的後續工作 比如整合測試 回歸...