c# 高级编程 12章271页 【LINQ】【LINQ提供程序】

264 阅读1分钟

LINQ 提供程序

.NET 包含几个LINQ提供程序

  • LINQ 提供程序:
    • 为特定的数据源,实现了标准的查询操作符
    • 至少要实现标准操作符
    • 也许会实现比LINQ定义的更多的扩展方法
      • 例如:LINQ to XML 实现了一些专门用于XML的方法
        • Elements()
        • Descendant()
        • Ancestors()

LINQ提供程序的实现方案,是根据命名空间第一个参数的类型来选择的 例如,如何选择用哪一个Where()方法:

  • LINQ to Objects中,Enumerable类里的Where()扩展方法:
    • public static IEnumerable<TSource> Where(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
  • LINQ to Entities中,Queryable<T>类定义的Where()扩展方法:
    • public static IQueryable<TSource> Where(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

两个Where()方法都在System.Core程序集中,都在System.Linq命名空间中

编译器是根据第一个参数是IEnumerable<TSource>,还是IQueryable<TSource>来选择使用哪一个Where()方法的

第三方的LINQ提供程序

  • LINQ to MySQL
  • LINQ to Amazon
  • LINQ to Flickr
  • LINQ to LDAP
  • LINQ to SharePoint

无论什么数据源,都可以通过LINQ使用相同的查询语法