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

LINQ高級特性簡單介紹

開發 后端
這里介紹LINQ高級特性,在LINQ中,Lambda 表達式是許多標準查詢運算符的基礎,編譯器創建lambda表達式以捕獲基礎查詢方法。

本文介紹LINQ高級特性,其包括大家都關心的動態查詢的用法和使用表達式樹依據 IQueryable 數據源構造一個動態查詢。

LINQ高級特性之動態查詢

有這樣一個場景:應用程序可能會提供一個用戶界面,用戶可以使用該用戶界面指定一個或多個謂詞來篩選數據。這種情況在編譯時不知道查詢的細節,動態查詢將十分有用。

在LINQ中,Lambda 表達式是許多標準查詢運算符的基礎,編譯器創建lambda表達式以捕獲基礎查詢方法(例如 Where、Select、Order By、Take While 以及其他方法)中定義的計算。表達式目錄樹用于針對數據源的結構化查詢,這些數據源實現IQueryable<T>。例如,LINQ to SQL 提供程序實現 IQueryable<T>接口,用于查詢關系數據存儲。C#和Visual Basic編譯器會針對此類數據源的查詢編譯為代碼,該代碼在運行時將生成一個表達式目錄樹。然后,查詢提供程序可以遍歷表達式目錄樹數據結構,并將其轉換為適合于數據源的查詢語言。

表達式目錄樹在LINQ中用于表示分配給類型為Expression<TDelegate>的變量的Lambda表達式。還可用于創建動態LINQ查詢。

System.Linq.Expressions 命名空間提供用于手動生成表達式目錄樹的API。Expression類包含創建特定類型的表達式目錄樹節點的靜態工廠方法,例如,ParameterExpression(表示一個已命名的參數表達式)或 MethodCallExpression(表示一個方法調用)。編譯器生成的表達式目錄樹的根始終在類型 Expression<TDelegate>的節點中,其中TDelegate是包含至多五個輸入參數的任何TDelegate委托;也就是說,其根節點是表示一個lambda表達式。

下面幾個例子描述如何使用表達式目錄樹來創建動態LINQ查詢。

LINQ高級特性之Select

下面例子說明如何使用表達式樹依據 IQueryable 數據源構造一個動態查詢,查詢出每個顧客的ContactName,并用GetCommand方法獲取其生成SQL語句。

  1. //依據IQueryable數據源構造一個查詢  
  2. IQueryable<Customer> custs = db.Customers;  
  3. //組建一個表達式樹來創建一個參數  
  4. ParameterExpressionparam =Expression.Parameter(typeof(Customer),"c");  
  5. //組建表達式樹  
  6. c.ContactNameExpressionselector =Expression.Property(param,typeof(Customer).
    GetProperty("ContactName"));  
  7. ExpressionExpressionpred =Expression.Lambda(selector, param);  
  8. //組建表達式樹:Select(c=>c.ContactName)ExpressionExpressionexpr =Expression.Call
    (typeof(Queryable),"Select",newType[] {typeof(Customer),typeof(string) },
    Expression.Constant(custs), pred);  
  9. //使用表達式樹來生成動態查詢IQueryable<string> query = db.Customers.AsQueryable()  
  10. .Provider.CreateQuery<string>(expr);  
  11. //使用GetCommand方法獲取SQL語句   
  12. System.Data.Common.DbCommandcmd = db.GetCommand(query);  
  13. Console.WriteLine(cmd.CommandText); 

【編輯推薦】

  1. LINQ to SQL數據表介紹
  2. LINQ查詢的目的與實現手段
  3. LINQ from子句進行復合查詢實現方法
  4. LINQ查詢表達式功能詳解
  5. LINQ基礎概念總結
責任編輯:佚名 來源: IT168
相關推薦

2009-09-08 10:50:20

2009-09-11 09:41:19

LINQ to SQL

2009-09-09 14:20:49

LINQ To Luc

2009-09-07 17:05:10

LINQ進行查詢

2009-09-15 09:39:38

LINQ查詢架構

2009-09-09 09:36:25

Linq對象引用

2009-09-17 09:15:49

Linq表達式樹

2011-06-28 11:27:19

java克隆對象

2009-09-08 13:07:15

介紹Linq to S

2009-09-16 10:38:43

LINQ查詢

2009-09-10 17:30:15

LINQ Where子

2009-08-13 11:01:32

LINQPadLINQ工具

2009-09-18 09:25:06

LINQ Framew

2009-09-09 15:28:43

Linq to obj

2009-09-10 16:28:17

LINQ查詢

2009-09-14 10:57:46

LINQ入門

2009-09-18 16:00:07

LINQ架構

2009-09-15 16:26:36

Linq orderb

2009-09-08 13:16:01

Linq to SQL

2009-09-15 15:09:50

Linq本質
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九免费在线视频 | 国产精品一区二区三区在线 | 亚洲精品乱码久久久久久按摩观 | 精品国产一二三区 | 成年视频在线观看 | 91高清在线 | 91色视频在线观看 | 欧美在线a| 精品蜜桃一区二区三区 | 激情在线视频网站 | 亚洲精品无人区 | 亚洲日本中文字幕在线 | 在线免费小视频 | 韩国久久 | 婷婷中文字幕 | 在线观看三级av | 国产一区二区三区免费 | 精品国产一区二区三区成人影院 | 中文字幕一区二区三区四区五区 | 国产精品久久久久影院色老大 | 亚洲精品免费视频 | 久久久噜噜噜www成人网 | 9久久精品 | 天天干天天色 | 久久午夜精品福利一区二区 | 精品欧美一区二区三区久久久 | 午夜理伦三级理论三级在线观看 | 成人做爰69片免费观看 | 亚洲一区二区三区在线播放 | 365夜爽爽欧美性午夜免费视频 | 在线播放国产一区二区三区 | 国产精品爱久久久久久久 | 欧美成人免费在线 | 精品三级在线观看 | 日韩综合在线 | 曰韩一二三区 | 亚洲视频免费 | 91av视频在线观看 | 国产九九九九 | 精品一二三区视频 | 日本三级做a全过程在线观看 |