首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IQueryable与IEnumberable的区别

    转自 http://www.cnblogs.com/fly_dragon/archive/2011/02/21/1959933.html IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代...也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...>(3); //注意这个AsEnumerableT_Class>()在分页查询之前,先将其转换成IEnumerable类型 IEnumerable...第一种:直接返回 IQueryable类型的查询,如下图所示: ? 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: ?...总结 IQueryable接口与IEnumberable接口的区别: IEnumerableT> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable

    85810

    .NET中数据访问方式(一):LINQ

    可查询类型 LINQ之所以能够使用相同的语法操作不同的数据源,是因为和LINQ直接打交道的是可查询类型而非数据源,在LINQ中,直接或间接实现了IEnumerableT>接口的类型称为可查询类型, ....NET中如:ListT>,Dictionary,数组(由CLR负责隐式实现IEnumerableT>接口)等,实现了IEnumerableT>接口。...IQueryableT>继承自IEnumerableT>,是个标记接口。...扩展方法(又称为标准查询) System.Linq.Enumerable类和System.Linq.Queryable类,分别针对IEnumerableT>和IQueryableT>接口进行的扩展。...两个接口 在LINQ中,一个查询表达式被编译为表达式树或者委托,查询结果为IEnumerableT>类型则被编译为委托,查询结果是IQueryable或IQueryableT>类型则被编译为表达式树

    3.7K30

    .NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

    2】.扩展Linq to Object (应用框架具有查询功能) 我们知道LINQ所支持的查询范围主要在IEnumerableT>、IQueryableT>这两个方面,对于我们想要扩展LINQ的查询能力也主要集中在这两块...yield return order; } } } 这是个Order集合类型OrderCollection类,该类专门用来存放或处理...IQueryableT>并非IEnumerableT>对象,无法实时的做出处理然后将结果返回给下一个方法接着执行。那么它如何将片段性的执行方法串成一个整的、完整的查询?...IQueryableT>继承自IEnumerableT>接口,也就是可以被foreach语法调用的,但是在GetEnumerator方法中才会去执行提供程序的代码。...} 这是IQueryableT>接口中从IEnumerableT>继承下来的两个返回IEnumerator接口类型的方法,在我们目前使用的Linq to Sql、Linq to Entity中都会返回强类型的集合对象

    2.1K11

    Entity Framework快速入门--IQueryable与IEnumberable的区别

    也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...接口的集合中 IQueryableT_Class> classesIQue = (from c in schoolEntities.T_Class...>(3); //注意这个AsEnumerableT_Class>()在分页查询之前,先将其转换成IEnumerable类型 IEnumerable...第一种:直接返回 IQueryable类型的查询,如下图所示: 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: 总结 IQueryable接口与IEnumberable...接口的区别:  IEnumerableT> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryableT> 是将Skip ,take 这些方法表达式翻译成

    75150

    LINQ鲜为人知的7个秘密:从表达式树到并行查询的深度探索

    IQueryable不存储数据,它存储的是"配方" 这可能是最关键也最容易被误解的概念。当你针对数据库编写LINQ查询时,通常操作的是IQueryable。...许多开发者将其视为内存中的IEnumerable,但二者有本质区别: • IEnumerable是数据流,你可以遍历它 • IQueryable是表达式树,它是查询的"配方"或蓝图 当你对IQueryable...只有当你调用ToList()、First()或Count()等物化方法时,LINQ提供程序(如Entity Framework)才会将整个"配方"转换为优化后的SQL查询并发送到数据库。...public staticclassLinqExtensions { // 生成指定大小的数据块 public static IEnumerableIEnumerableT>> Batch...T>(this IEnumerableT> source, int size) { T[] bucket = null; var count = ;

    19100

    C#3.0新增功能09 LINQ 标准查询运算符 01 概述

    这些方法中的大多数都作用于序列;其中序列指其类型实现 IEnumerableT> 接口或 IQueryableT> 接口的对象。 标准查询运算符提供包括筛选、投影、聚合、排序等在内的查询功能。...共有两组 LINQ 标准查询运算符,一组作用于类型 IEnumerableT> 的对象,另一组作用于类型 IQueryableT> 的对象。...这意味着可以使用静态方法语法或实例方法语法来调用它们。 此外,多个标准查询运算符方法作用于那些基于 IEnumerableT> 或 IQueryableT> 的类型外的类型。...这些方法(Cast(IEnumerable) 和 OfType(IEnumerable))均允许在 LINQ 模式中查询非参数化或非泛型集合。...与之相反,扩展 IQueryableT> 的方法不会实现任何查询行为,但会生成一个表示要执行的查询的表达式树。 源 IQueryableT> 对象执行查询处理。

    97820

    Entity Framework 基础知识走马观花

    ="T_Class" EntitySet="T_Class" /> T_Person" EntitySet="T_Person" />...例如:NavigationProperty 导航属性,因为T_Person表与T_Class、T_Message表都存在一对一或一对多的关系(即存在外键),因此在EF模型所生成的对象实体中,加入了外键所在实体的导航属性...T_Class { get; set; } }   最后,在实际开发中,我们有如下一段代码: IQueryableT_Person> dbQuery = db.T_Person.Where...(1)我们来看看下面一段代码,它的作用是通过每个班级查询所对应的所有学生信息: IQueryableT_Class> classQuery = db.T_Class; foreach...我们可以对上面的代码段进行修改,得到下面的代码: IQueryableT_Class> classQuery = db.T_Class.Include("T_Person");

    1.6K20

    《ASP.ENT Core 与 RESTful API 开发实战》-- (第6章)-- 读书笔记(上)

    高级查询和日志 6.1 分页 在 EF Core 中,数据的查询通过集成语言查询(LINQ)实现,它支持强类型,支持对 DbContext 派生类的 DbSet 类型成员进行访问,DbSet 类实现了 IQueryable...和 IEnumerable 接口,LINQ 形式的查询会通过数据库提供程序转换为数据库查询语言,并最终返回实体集合 接下来,在 Library.API 项目中实现分页功能 添加一个 AuthorResourceParameters...Take(parameters.PageSize) .OrderBy(author => author.Name); var authorDtoList = Mapper.MapIEnumerable...> CreateAsync(IQueryableT> source, int pageNumber, int pageSize) { var totalCount = source.Count...服务器不仅返回所请求的资源,并且在响应的消息头中包含了分页元数据,可以通过 previousePageLink,nextPageLink 的 URL 值直接访问上一页以及下一页数据 6.2 过滤和搜索 过滤,是对资源的一个或多个属性与指定的参数值进行匹配并筛选

    57610

    编写高质量代码改善C#程序的157个建议

    本文主要学习记录以下内容:   建议29、区别LINQ查询中的IEnumerableT>和IQueryableT>   建议30、使用LINQ取代集合中的比较器和迭代器   建议31、在LINQ查询中避免不必要的迭代...稍加观察我们会发现,接口IQueryableT>实际也是继承了IEnumerableT>接口的,所以致使这两个接口额方法在很大成都上是一致的。...简单的来表述就是:本地数据源用IEnumerableT>,远程数据源用IQueryableT>。   ...那么到底什么时候使用IQueryableT>,什么时候使用IEnumerableT>呢?...在使用IQueryableT>和IEnumerableT>的时候还需要注意一点,IEnumerableT>查询的逻辑可以直接用我们自己所定义的方法,IQueryableT>则不能使用自定义的方法

    1.5K50

    C#规范整理·集合和Linq

    如果一定要动态改变数组的长度,一种方法是将数组转换为ArrayList或List<T>,需要扩容时,内部数组将自动翻倍扩容 还有一种方法是用数组的复制功能。...IEnumerable<T>接口的集合类进行扩展;Queryable类,它针对继承了IQueryable<T>接口的集合类进行扩展。...那么,到底什么时候使用IQueryable<T>,什么时候使用IEnumerable<T>呢?简单表述就是:本地数据源用IEnumerable<T>,远程数据源用IQueryable<T>。...注意 在使用IQueryable<T>和IEnumerable<T>的时候还需要注意一点,IEnumerable<T>查询的逻辑可以直接用我们自己所定义的方法,而IQueryable<T>则不能使用自定义的方法...以往,如果我们要绕开集合的Sort方法对集合元素按照一定的顺序进行迭代,则需要让类型继承IEnumerable接口(泛型集合是IEnumerable<T>接口),实现一个或多个迭代器。

    1.9K30
    领券