`
terryfeng
  • 浏览: 505078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINQ 提供程序

阅读更多

.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 <TSource> Where <TSource> (this IEnumerable <TSource> source, Func <TSource, bool> predicate);
在 System.Linq 命名空间中,还有另一个类实现了操作符Where。这个实现代码由LINQ to SQL 使用,
这些代码在类Queryable 中:
public static IQueryable <TSource> Where <TSource> (this IQueryable <TSource> source, Expression < Func <TSource, bool> > predicate);
这两个类都在System.Linq 命名空间的System.Core 程序集中实现。

那么,它是如何定义的?使用了什么方法?

无论是用Func<TSource, bool>参数传送,还是用Expression< Func<TSource,bool>>参数传送,

λ表达式都是相同的。只是编译器的操作是不同的,它根据source 参数来选择。

编译器根据其参数选择最匹配的方法。

在LINQ to SQL 中定义的DataContext 类的GetTable()方法返回IQueryable<TSource>,因此LINQ to SQL 使用类Queryable 的Wherer()方法。
LINQ to SQL 提供程序使用表达式树,实现了接口IQueryable 和IQueryProvider。

分享到:
评论

相关推荐

    simple-linq:一个非常简单的LINQ提供程序

    简单的linq 如果您尝试构建自定义LINQ提供程序,您可能会注意到这。 是一个很好的框架,可减少从头开始编写完整的LINQ提供程序的。 但是,如果您要构建一个非常基本的提供程序,那么即使re-linq也可能会过大。 您...

    LinqToLdap:C#LINQ提供程序基于System.DirectoryServices.Protocols构建,用于查询和更新LDAP服务器

    LINQ提供程序基于System.DirectoryServices.Protocols构建,用于与LDAP服务器进行交互。 概述 关于如何通过System.DirectoryServices和System.DirectoryServices.AccountManagement访问Active Directory的示例很多。...

    SimpleLINQ:用于实现自定义(但简单)LINQ提供程序的简化包装器

    "SimpleLINQ" 是一个项目或库,它的主要目的是为开发者提供一个简单的方法来实现自定义的LINQ(Language Integrated Query)提供程序。LINQ是.NET框架中的一部分,它允许程序员使用类似SQL的语法进行数据查询,但...

    101个linq例子程序

    标题"101个linq例子程序"表明这是一份包含101个示例的集合,专门针对LINQ(Language Integrated Query,语言集成查询)技术,这是一种在.NET Framework中用于查询数据的强大工具。描述中的"101个linq例子程序"进一步...

    Relinq:使用re-linq,现在比以往任何时候都更容易创建功能齐全的LINQ提供程序

    项目说明使用re-linq,现在比以往任何时候都更容易创建功能齐全的LINQ提供程序。 是的,您之前已经听说过。 但是re-linq是真实的东西:它由Entity Framework 7和NHibernate使用。 re-linq代替了IQueryable表达式树,...

    Linq中文帮助文档

    Linq to ADO.NET是针对ADO.NET数据提供程序的Linq扩展,它允许开发者直接使用Linq查询任何实现了IQueryable接口的数据源,如Entity Framework或其他自定义的数据提供程序。 1. **ADO.NET Entity Framework**:虽然...

    nein-linq:NeinLinq提供了使用LINQ提供程序的有用扩展,例如仅支持.NET函数的一小部分的Entity Framework,重用函数,重写查询,甚至使其成为空安全的,以及使用可翻译谓词和选择器构建动态查询

    内因·林克(NeinLinq) NeinLinq为使用LINQ提供程序(如实体框架)提供了有用的扩展,这些提供程序仅支持.NET函数的一小部分,重用函数,重写查询,甚至使其成为null安全的,以及使用可翻译谓词和选择器构建动态...

    linqtodax:ssas 表格 dax 语言的 linq 提供程序

    【linqtodax:ssas 表格 DAX 语言的 Linq 提供程序】 LinqToDax 是一个开源项目,最初托管在 CodePlex 上,后来可能迁移至其他代码托管平台,它为 SQL Server Analysis Services (SSAS) 的 Tabular 模式提供了一个 ...

    Linqify:用于为异步REST API创建Linq提供程序的工具包

    林奇菲用于为异步REST API创建Linq提供程序的工具包[进展中的文档]样品如果要查看此工具包的任何示例用法,可以查看以下项目: 用法语境上下文是用户的主要入口点。 为了创建一个新的上下文,只需创建一个继承自“ ...

    精通LINQ程序设计

    **精通LINQ程序设计** LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一项重要技术,由微软推出,旨在提供一种统一的查询接口,用于处理各种数据源,包括数据库、XML、数组以及集合等。它使得在C#...

    Joker:React性数据从SQL Server更改为.NET客户端。 SqlTableDependency扩展,Joker.OData,Joker.Redis,Joker.MVVM和ksqlDB LINQ提供程序

    Kafka.DotNet.ksqlDB推查询LINQ提供程序 Kafka.DotNet.ksqlDB包从您的C#linq查询生成ksql查询。 有关更多信息,请查看 。 您可以使用对推送通知服务器端进行过滤,设计,限制等 Install-Package Kafka.DotNet....

    LINQ经典教材 LINQ实战 ( LINQ in Action ) 高清带目录及书上示例源代码 很好的教材

    2. **LINQ提供程序**:不同的数据源需要不同的查询处理方式,如LINQ to SQL用于数据库,LINQ to XML用于XML数据,LINQ to Objects用于内存中的对象集合。 3. **扩展方法**:LINQ主要通过扩展方法实现,这些方法添加...

    c# Linq WebService rss

    •WebServiceLinqProvider(TerraService): 用于 TerraServer-USA Web 服务的自定义 LINQ 提供程序和客户端。 •Whitepapers: 以下白皮书以 Word 格式存储在此目录中: ◦LINQ 项目概述 ◦LINQ to SQL 概述(适用于 C#...

    LINQ in Action(2008).pdf

    - **扩展LINQ**:这部分内容着重于如何自定义LINQ提供程序,以便能够针对特定类型的数据源进行查询。 - **整合技术**:探讨了如何将LINQ与其他.NET技术相结合,如WCF、WF等,从而构建出更加灵活、高效的应用程序。 ...

    LINQ中文教程下载

    “LINQ中文教程.doc”则可能深入介绍LINQ的各个方面,包括基础概念、查询语法、查询运算符、延迟执行和即时执行的概念,以及如何使用LINQ to Objects、LINQ to SQL、LINQ to XML等不同的 LINQ 提供程序。教程可能还...

    精通LINQ数据访问技术第12章

    最后,我们将讨论一些高级话题,如查询的延迟执行、查询优化、以及如何自定义LINQ提供程序以扩展其功能。这些内容将帮助你深入理解LINQ的工作原理,并能更好地应用于实际项目中。 总而言之,精通LINQ数据访问技术第...

    数据库 C#linq基础程序程序练习案例.rar

    本压缩包文件包含了一系列的C# LINQ基础程序练习案例,旨在帮助学习者深入理解和掌握LINQ的基本用法。 首先,我们来了解什么是LINQ。LINQ是.NET 3.5引入的一项新特性,它将查询表达式整合到C#和VB.NET的语言结构中...

    Linq学习资源很实用

    - **LINQ提供程序**:不同的数据源需要不同的Linq提供程序来支持,如Linq to SQL用于数据库,Linq to Objects用于对象集合,Linq to XML用于XML文档。 - **IQueryable接口**:这是Linq的核心接口,实现了延迟执行...

    在工作流中使用linq查询

    通过实现`IQueryable`接口和提供`Expression`解析,开发者可以创建自己的LINQ提供程序,使任何数据源变得可查询。 在实际的工作流应用中,利用LINQ的强大功能,开发人员可以编写出更简洁、更易于维护的代码。结合...

Global site tag (gtag.js) - Google Analytics