開發人員眼中的LINQ

2021-04-17 15:48:47 字數 4546 閱讀 9097

開發人員眼中的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的修復時間,以及在此基礎上的後續工作 比如整合測試 回歸...