自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

System.Linq命名空間淺析

開發(fā) 后端
這里介紹System.Linq命名空間,其實整個命名空間都是一個擴(kuò)展方法的庫,它允許開發(fā)人員對任何數(shù)據(jù)類型進(jìn)行查詢。

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹System.Linq命名空間,包括介紹用LinQ來檢索數(shù)據(jù)等方面。

誰都知道LinQ是隨Orcas(VisualStudio2007)的.NET發(fā)布的內(nèi)置的一個擴(kuò)展方法,其實整個命名空間都是一個擴(kuò)展方法的庫,它允許開發(fā)人員對任何數(shù)據(jù)類型進(jìn)行查詢。大家都認(rèn)為這是數(shù)據(jù)查詢的趨勢,也許以后的SQL語言會慢慢的發(fā)展,但我想現(xiàn)如今大家最想看到的是LinQ帶給我們的溫暖和快樂。微軟把這些擴(kuò)展的方法放在System.Linq命名空間下,當(dāng)我們創(chuàng)建一個新類型時,你會發(fā)現(xiàn)默認(rèn)的命名空間中多了一個,在.NET2.0及以前的版本中都只有三個命名空間,現(xiàn)在多了個System.Linq命名空間。LinQ定義了標(biāo)準(zhǔn)的查詢操作符擴(kuò)展方法,可以為.NET開發(fā)人員用來輕松地查詢XML,關(guān)系數(shù)據(jù)庫,.NET 對象,和任何其他數(shù)據(jù)結(jié)構(gòu)類型。Let’s go,下面讓我們慢慢體會LinQ帶給我們的快樂吧!(版本VSMar07CTP)

下面我們來看看LinQ分別對不同類型的數(shù)據(jù)進(jìn)行查詢,但由于VSMar07CTP有一個BUG,我們再看下面的例子時首先要去掉這個BUG。在我查看M$Connect時發(fā)現(xiàn)已經(jīng)有人提交了這個BUG,就是web.config中編譯通不過,其實去掉那個很簡單,我們打開web.config找到<compiler>節(jié)點,把子節(jié)點注釋掉,OK去掉了BUG后我們就可以正常的編譯調(diào)試了,如下:

  1. <system.codedom> 
  2. <compilers> 
  3. <compiler language="c#;cs;csharp" extension=".cs" 
  4. type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0,  
  5. Culture=neutralPublicKeyToken=b77a5c561934e089"/> 
  6.  
  7. <!--<providerOption name="CompilerVersion" value="v3.5"/> 
  8. </compiler>--> 
  9. </compilers> 
  10. </system.codedom> 

我們還可以體會很多新鮮的功能,但是在這里就不再顯示其他的例子,下面我們來看看LinQ擴(kuò)展方法在XML中的應(yīng)用。其實我們也可以把它們應(yīng)用于數(shù)據(jù)庫等數(shù)據(jù)檢索,我們首先來定義一個XML文件,代碼如下:

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <people> 
  3. <person userID="1"> 
  4. <name>小兵</name> 
  5. <nickName>網(wǎng)魂小兵</nickName> 
  6. <age>24</age> 
  7. </person> 
  8. <person userID="2"> 
  9. <name>小賴</name> 
  10. <nickName>QQing</nickName> 
  11. <age>23</age> 
  12. </person> 
  13. </people> 

對于XML的數(shù)據(jù)檢索有多種方法,在這里我們看看怎樣用LinQ來檢索數(shù)據(jù),要用到這個功能當(dāng)然要引入命名空間System.Xml.Linq(這也就是傳說中的XLinQ,順便提一下對于數(shù)據(jù)庫的為DLinQ位于System.Data.Linq命名空間下)。[注:如果你找不到這兩個空間可以到%Windows%\Microsoft.Net\Framework目錄下的3.5里直接引用DLL類庫。]

  1. XDocument people = XDocument.Load(Server.MapPath("People.xml"));  
  2. IEnumerable<XElement> person = people.Descendants("person")  
  3. .Where(p => p. Attribute ("userID").Value == "1"); 

以上代碼它返回一個“XElement”元素序列,XElemen是沒有類型的XML節(jié)點元素。我們可以通過LINQ的 Select() 擴(kuò)展方法來構(gòu)造數(shù)據(jù)形狀,提供一個使用了新的對象初始化器句法的Lambda 表達(dá)式來填充同樣的“Person”類:

  1. XDocument people = XDocument.Load(Server.MapPath("People.xml"));  
  2.  
  3. IEnumerable<Person> person = people.Descendants("person")  
  4. .Where(p => p.Attribute("userID").Value == "1")  
  5. .Select(p => new Person { UserID=Convert.ToInt32(p.Attribute("userID").Value),  
  6. Name=p.Element("name").Value,  
  7. NickName=p.Element("nickName").Value,  
  8. Age=Convert.ToInt32(p.Element("age").Value)  
  9. }  

由于我也是個初學(xué)者,今天的體驗就到此了,***總要發(fā)表一下我的總體感受,LinQ帶給我們的功能其實是沒得說的,LinQ的強(qiáng)大允許一個可用于所有數(shù)據(jù)類型(數(shù)據(jù)庫,XML文件,內(nèi)存中的對象,以及web-services等)的共同的查詢編程模型和語法;LinQ是可以組合的,允許開發(fā)人員輕松地往查詢語法中添加新的方法/操作符,我們可以把我們自己擴(kuò)展的方法應(yīng)用其中;LinQ是可擴(kuò)展的,允許與任何數(shù)據(jù)提供器類型一起使用,可以和現(xiàn)有的ORM引擎結(jié)合……但我覺得擴(kuò)展方法在智能提示時會讓我覺得很亂,當(dāng)你不要用LinQ時為了讓智能提示更清晰還是建議你去除System.Linq命名空間。其他的功能及效果等到后面繼續(xù),也就是說欲知后事如何且聽下回分解!

【編輯推薦】

  1. LINQ匿名類型分析
  2. LINQ Where子句介紹
  3. LINQ使用Where擴(kuò)展方法
  4. 介紹LINQ一些強(qiáng)大功能
  5. Linq使用Select淺談
責(zé)任編輯:佚名 來源: 51CTO博客
相關(guān)推薦

2009-09-18 16:56:22

System.LINQ

2009-08-27 10:14:04

LINQ基礎(chǔ)概念

2009-09-15 17:16:58

LINQ查詢操作符

2009-08-28 13:56:25

C#反射命名空間

2009-09-15 14:30:11

Linq連接

2009-08-21 13:34:32

C# System.I

2009-09-17 13:30:32

LINQ to XML

2009-09-10 18:02:23

LINQ to SQL

2009-09-14 16:46:15

LINQ to XML

2009-09-16 17:11:35

LINQ To SQL

2009-09-16 15:33:22

LINQ to XML

2009-09-07 16:44:28

Linq String

2009-09-15 13:30:54

linq級聯(lián)

2009-09-14 13:37:25

LINQ ADO.NE

2009-09-10 14:47:53

Linq .NET查詢

2009-09-17 10:57:06

Linq隨機(jī)讀取數(shù)據(jù)

2009-09-17 17:34:23

linq to sql

2009-09-14 09:46:00

LINQ to SQL

2009-09-14 18:23:59

LINQ嵌套查詢

2009-09-17 18:05:15

linq to sql
點贊
收藏

51CTO技術(shù)棧公眾號