zoukankan      html  css  js  c++  java
  • IEnumerable<T>和IQueryable<T>

     

    建议29、区别LINQ查询中的IEnumerable<T>和IQueryable<T>

    LINQ查询方法一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:

        Enumerable类,它针对继承了IEnumerable<T>接口的集合类进行扩展。

        Queryable类,它针对继承了IQueryable<T>接口的集合类进行扩展。

    稍加观察我们会发现,接口IQueryable<T>实际也是继承了IEnumerable<T>接口的,所以致使这两个接口额方法在很大成都上是一致的。简单的来表述就是:本地数据源用IEnumerable<T>,远程数据源用IQueryable<T>。

      LINQ查询从功能上来讲实际上可以分为三类:LINQ to OBJECTS、LINQ to  SQL、LINQ to XML。设计Enumerable<T>和Queryable<T>两套接口的原因是为了区别对待LINQ to OBJECTS、LINQ to SQL,两者对于查询的处理在内部使用的是完全不同的机制。针对LINQ to OBJECTS时,使用Enumerable中的扩展方法对本地集合进行排序和查询等操作,查询参数接受的是Func<>。Func<>叫做谓语表达式,相当于一个委托。针对LINQ to SQL时,则使用Queryable中的扩展方法,它接受的参数是Expression<>。Expression<>用于包装Func<>。LINQ to SQL引擎最终会将表达式树转化成为相应的SQL语句,然后在数据库中执行。

     

    (建议29、区别LINQ查询中的IEnumerable<T>和IQueryable<T> http://www.cnblogs.com/aehyok/p/3712725.html

  • 相关阅读:
    BZOJ3697: 采药人的路径
    解题:WC 2007 石头剪刀布
    解题:CQOI 2017 老C的方块
    解题:洛谷4314 CPU监控
    解题:CQOI 2017 老C的任务
    解题:CF1009 Dominant Indices
    解题:CF570D Tree Requests
    解题:APIO 2012 派遣
    解题:ZJOI 2015 幻想乡战略游戏
    解题:洛谷4178 Tree
  • 原文地址:https://www.cnblogs.com/superCow/p/3783373.html
Copyright © 2011-2022 走看看