• C#编程(六十七)----------LINQ提供程序


      原文链接:http://blog.csdn.net/shanyongxu/article/details/47257511  

    LINQ提供程序

    .NET3.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。

    LINQ提供程序属于高级主体,对我我这样的屌丝来说,目前还望尘莫及啊.

    详细参考:https://msdn.microsoft.com/zh-cn/library/bb546158(v=vs.120).aspx

  • 相关阅读:
    第一章 第二节逻辑代数基础
    第一章 第一节数制与编码
    Altium Designer多原理图、PCB更新处理
    AD添加LOGO的方法
    XML中<beans>属性
    程序员值得学习的技术博客
    设计模式
    js分页实例
    Java构造和解析Json数据的方法
    H5+ 移动app学习之三 App离线存储
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6631978.html
Copyright © 2020-2023  润新知