LINQ 提供程式

2021-09-25 18:30:43 字數 1131 閱讀 9672

.net 3.5 包含幾個linq 提供程式。

linq 提供程式為特定的資料來源實現了標準的查詢操作符。

linq 提供程式也許會實現linq 定義的更多擴充套件方法,但至少要實現標準操作符。

linq to xml 不僅實現了專門用於xml 的方法,還實現了其他方法,例如system.xml.linq 命名空間的extensions 類定義的方法elements()、

descendants 和ancestors。

linq 提供程式的實現方案是根據命名空間和第乙個引數的型別來選擇的。

實現擴充套件方法的類的命名空間必須是開啟的,否則擴充套件類就不在作用域內。

在linq to objects 中定義的wherer()方法引數和在linq to sql中定義的wherer()方法引數是不同的。

linq to objects 中的wherer()方法是用enumerable 類定義的:

public static ienumerable where (this ienumerable source, func predicate);

在 system.linq 命名空間中,還有另乙個類實現了操作符where。這個實現**由linq to sql 使用,

這些**在類queryable 中:

public static iqueryable where (this iqueryable source, expression < func > predicate);

這兩個類都在system.linq 命名空間的system.core 程式集中實現。

那麼,它是如何定義的?使用了什麼方法?

無論是用func引數傳送,還是用expression< func>引數傳送,

λ表示式都是相同的。只是編譯器的操作是不同的,它根據source 引數來選擇。

編譯器根據其引數選擇最匹配的方法。

在linq to sql 中定義的datacontext 類的gettable()方法返回iqueryable,因此linq to sql 使用類queryable 的wherer()方法。

linq to sql 提供程式使用表示式樹,實現了介面iqueryable 和iqueryprovider。

LINQ 提供程式

net 3.5 包含幾個linq 提供程式。linq 提供程式為特定的資料來源實現了標準的查詢操作符。linq 提供程式也許會實現linq 定義的更多擴充套件方法,但至少要實現標準操作符。linq to xml 不僅實現了專門用於xml 的方法,還實現了其他方法,例如system.xml.linq ...

LINQ 提供程式

net 3.5 包含幾個linq 提供程式。linq 提供程式為特定的資料來源實現了標準的查詢操作符。linq 提供程式也許會實現linq 定義的更多擴充套件方法,但至少要實現標準操作符。linq to xml 不僅實現了專門用於xml 的方法,還實現了其他方法,例如system.xml.linq ...

C 基礎 Linq提供程式

1 linq to xml 命名空間system.xml.linq 2 linq to objects 3 linq to entities linq to objects的where和linq to entities的where這個兩個類都在system.linq命名空間的system.core程...