成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ查詢和泛型類型的關系淺析

開發 后端
LINQ查詢的使用和泛型類型的關系是什么呢?我們在學習LINQ查詢的過程中需要明白的是什么呢?那么本文就向你介紹LINQ查詢和泛型類型的關系相關的內容。

LINQ查詢和泛型類型的關系是什么呢?LINQ查詢和泛型類型內在的聯系是如何的呢?我們在實際的操作過程中如何把握呢?那么這里就向你簡單介紹一下。

LINQ查詢基于泛型類型,在 .NET Framework 的 2.0 版中引入了泛型類型。您無需深入了解泛型即可開始編寫查詢。但是,您可能需要了解兩個基本概念:

1.當您創建泛型集合類(如 List﹤(Of ﹤(T﹥)﹥))的實例時,您將“T”替換為列表將包含的對象的類型。例如,字符串列表表示為 List﹤string﹥,Customer 對象列表表示為 List﹤Customer﹥。泛型列表是強類型的,且提供了比將其元素存儲為 Object 的集合更多的好處。如果您嘗試將 Customer 添加到 List﹤string﹥,則會在編譯時出現一條錯誤。泛型集合易于使用的原因是您不必執行運行時類型強制轉換。

2.IEnumerable﹤(Of ﹤(T﹥)﹥) 是一個接口,通過該接口,可以使用 foreach 語句來枚舉泛型集合類。泛型集合類支持 IEnumerable﹤(Of ﹤(T﹥)﹥),就像非泛型集合類(如 ArrayList)支持 IEnumerable。

3.LINQ 查詢變量類型化為 IEnumerable﹤(Of ﹤(T﹥)﹥) 或派生類型,如 IQueryable﹤(Of ﹤(T﹥)﹥)。當您看到類型化為 IEnumerable﹤Customer﹥ 的查詢變量時,這只意味著在執行該查詢時,該查詢將生成包含零個或多個 Customer 對象的序列。

LINQ查詢的使用:

  1. IEnumerable﹤Customer﹥ customerQuery =  
  2. from cust in customers  
  3. where cust.City == "London" 
  4. select cust;  
  5. foreach (Customer customer in customerQuery)  
  6. {  
  7. Console.WriteLine(customer.LastName +   
  8. ", " + customer.FirstName);  

如果您愿意,可以使用 var 關鍵字來避免使用泛型語法。var 關鍵字指示編譯器通過查看在 from 子句中指定的數據源來推斷查詢變量的類型。下面的示例生成與上一個示例相同的編譯代碼:

  1. var customerQuery2 =   
  2. from cust in customers  
  3. where cust.City == "London" 
  4. select cust;  
  5. foreach(var customer in customerQuery2)  
  6. {  
  7. Console.WriteLine(customer.LastName +   
  8. ", " + customer.FirstName);  

當變量的類型明顯或顯式指定嵌套泛型類型(如由組查詢生成的那些類型)并不重要時,var 關鍵字很有用。通常,我建議如果您使用 var,應意識到這可能使您的代碼更難以讓別人理解。

若要有效編寫查詢,您應該了解完整的查詢操作中的變量類型是如何全部彼此關聯的。如果您了解這些關系,就能夠更容易地理解文檔中的 LINQ 示例和代碼示例。另外,還能了解在使用 var 隱式對變量進行類型化時的后臺操作。

LINQ 查詢操作在數據源、查詢本身及查詢執行中是強類型的。查詢中變量的類型必須與數據源中元素的類型和 foreach 語句中迭代變量的類型兼容。此強類型保證在編譯時捕獲類型錯誤,以便可以在用戶遇到這些錯誤之前更正它們。

為了演示這些類型關系,下面的大多數示例對所有變量使用顯式類型。

LINQ查詢的一些問題:

下圖演示不對數據執行轉換的 LINQ to Objects 查詢操作。源包含一個字符串序列,查詢輸出也是一個字符串序列。

字符串序列  

1.數據源的類型參數決定范圍變量的類型。

2.選擇的對象的類型決定查詢變量的類型。此處的 name 為一個字符串。因此,查詢變量是一個 IEnumerable﹤string﹥。

3.在 foreach 語句中循環訪問查詢變量。因為查詢變量是一個字符串序列,所以迭代變量也是一個字符串。

下圖演示對數據執行簡單轉換的 LINQ to SQL 查詢操作。查詢將一個 Customer 對象序列用作輸入,并只選擇結果中的 Name 屬性。因為 Name 是一個字符串,所以查詢生成一個字符串序列作為輸出。

生成一個字符串序列 

1.數據源的類型參數決定范圍變量的類型。

2.select 語句返回 Name 屬性,而非完整的 Customer 對象。因為 Name 是一個字符串,所以 custNameQuery 的類型參數是 string,而非 Customer。

3.因為 custNameQuery 是一個字符串序列,所以 foreach 循環的迭代變量也必須是 string。

下圖演示稍微復雜的轉換。select 語句返回只捕獲原始 Customer 對象的兩個成員的匿名類型。

select 語句的返回 

1.數據源的類型參數始終為查詢中的范圍變量的類型。

2.因為 select 語句生成匿名類型,所以必須使用 var 隱式類型化查詢變量。

3.因為查詢變量的類型是隱式的,所以 foreach 循環中的迭代變量也必須是隱式的。

4.雖然您應該了解查詢操作中的類型關系,但是您也可以選擇讓編譯器為您執行全部工作。關鍵字 var 可用于查詢操作中的任何局部變量。下圖與前面討論的第二個示例完全等效。***的區別是編譯器將為查詢操作中的各個變量提供強類型:

為查詢操作中的各個變量提供強類型 

LINQ查詢以及LINQ查詢和泛型類型的關系的基本內容就向你介紹到這里,希望對你了解和掌握LINQ查詢和泛型類型的關系有所幫助。

【編輯推薦】

  1. 關于LINQ模糊查詢實質的探究
  2. LINQ模糊查詢的學習心得淺析
  3. LINQ嵌套查詢實現淺析
  4. LINQ查詢方式的探尋
  5. LINQ查詢的效果分析
責任編輯:仲衡 來源: 百度空間
相關推薦

2009-09-08 16:36:10

LINQ查詢基于泛型類

2009-04-24 09:33:12

LINQ查詢非泛型

2009-05-27 10:12:27

LINQ泛型字典Dictionary

2009-08-24 14:51:25

C# 泛型泛型類型

2009-09-07 16:44:28

Linq String

2009-09-15 10:35:11

linq多表查詢

2009-09-14 19:14:51

LINQ動態查詢

2009-09-14 14:01:21

LINQ泛型數據集

2009-09-10 14:47:53

Linq .NET查詢

2009-09-15 09:19:22

linq動態條件

2009-09-17 18:05:15

linq to sql

2009-09-14 18:23:59

LINQ嵌套查詢

2009-09-17 09:09:50

Lambda表達式Linq查詢

2009-09-15 17:16:58

LINQ查詢操作符

2009-09-14 17:10:57

LINQ模糊查詢

2009-08-24 14:20:13

C# 強制類型轉換

2009-09-15 13:28:49

LINQ表間關系查詢

2010-05-17 09:34:46

LINQAjax

2009-09-14 18:19:49

LINQ模糊查詢

2009-09-14 17:40:47

LINQ To SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷午夜天 | 日本电影韩国电影免费观看 | 最近日韩中文字幕 | 国产精品免费高清 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品视频久久久 | 国产欧美一区二区三区日本久久久 | av色在线| 99精品久久久久 | 国产精品美女一区二区三区 | 中文字幕av一区二区三区 | 国产午夜精品福利 | 91精品久久久久久久久久入口 | 亚洲一区二区电影在线观看 | 91色在线| 欧美h版 | 国产精品视频综合 | 日日日干干干 | 日日夜夜天天综合 | 在线一区二区三区 | 亚洲成人精品视频 | 久久精品91久久久久久再现 | 一区二区三区不卡视频 | 国产精品久久久久久久久婷婷 | 中文字幕日韩欧美 | 亚洲视频二区 | 欧美福利一区 | 免费看片国产 | 视频一区二区中文字幕 | 毛片高清| 中文字幕在线视频免费视频 | 在线免费观看成年人视频 | 欧美日韩精品久久久免费观看 | 日韩一区二区三区在线看 | 99精品免费久久久久久日本 | 美女在线视频一区二区三区 | 一区二区三区四区在线视频 | 97精品超碰一区二区三区 | 日韩欧美成人精品 | 欧美一区二区视频 | 国产精品综合色区在线观看 |