`

IEnumerable vs IQueryable

阅读更多

        初学Entity Framework时,根本没有意识到IQueryable。那时从数据库查数据都是先把所有记录取出来,放内存上,再对这些内存上的数据进行筛选。数据少的时候,这种方法也马马虎虎能用。但数据一多,性能问题突显。

        IEnumberable 和 IQueryable的差异。
        来源:IEnumerable VS IQueryable

 


        IEnumberable适用于查询内存中的集合数据。如List,Arrary,Linq to Object,Linq to Xml
        当它用于查询数据库中的数据时,过程如下:

  1. 在服务器端(数据库)执行查询搜索(不带复杂的筛选条件)
  2. 将查到的数据载入到客户端的内存中
  3. 对客户端内存中的数据进行筛选

        因为IEnumerable不支持懒加载

 

 

        IQueryable适用于查询内存外的集合数据。如数据库,Linq to Sql,Service
        当它用于查询数据库中的数据时,会将查询和所有筛选都放在服务端(数据库)完成。

        因为IQueryable支持懒加载。(所以适用于分页的场景)

分享到:
评论

相关推荐

    用于在ASP.NET中轻松分页任何IEnumerable IQueryable的库.zip

    【标题】中的“用于在ASP.NET中轻松分页任何IEnumerable IQueryable的库”指的是一个特定的开发工具或库,它使得开发者在使用ASP.NET框架时,能够便捷地对数据进行分页处理。在Web开发中,分页是常见的功能,尤其在...

    EntityFrameworkTests

    疑点一:IEnumerable vs IQueryable 查看详情 使用EF(Core)查询时,IQuerayble是否比使用IEnumerable提供更好的性能? 相关项目: IQueryableVsIEnumerable_Net_Seeder IQueryableVsIEnumerable_NetCore 结论 ...

    SearchExtensions:IQueryable扩展方法库以执行搜索

    SearchExtensions是一个IQueryable和IEnumerable扩展方法库,用于执行搜索。 有关这些软件包及其使用的更多信息,请访问。 该项目代表以下3个nuget软件包的源代码: 一种流利的api,用于跨IEnumerable和...

    C# IQueryable及IEnumerable区别解析

    在C#编程中,`IQueryable`和`IEnumerable`接口都是用于处理集合数据的重要工具,尤其是在Entity Framework (EF)中进行数据库查询时。两者虽然都用于数据查询,但它们的内部处理机制和应用场景存在显著差异。 `...

    X.PagedList:用于轻松分页ASP.NETASP.NET Core中的任何IEnumerableIQueryable的库

    PagedList是一个库,使您可以轻松获取IEnumerable / IQueryable,将其切成“页面”,并通过索引获取特定的“页面”。 PagedList.Mvc允许您获取该“页面”并显示具有诸如“上一个”,“下一个”等链接的寻呼机控件。...

    C# Entity Framework中的IQueryable和IQueryProvider详解

    IQueryable接口继承自IEnumerable,它提供了对查询表达式的支持。当你在EF中使用Linq to Entities编写查询时,返回的结果通常为IQueryable类型。这个接口包含三个重要的属性: 1. **ElementType**: 表示IQueryable...

    C#中IEnumerable、ICollection、IList、List之间的区别

    在C#编程语言中,`IEnumerable<T>`、`ICollection<T>`、`IList<T>`以及`List<T>`是四个常见的接口和类,它们都与集合操作密切相关,但各自具有不同的特性和用途。以下是对这些概念的详细解释: 1. **IEnumerable**...

    LinqToObject例题----101

    - IQueryable与IEnumerable:LINQ查询有两种主要的接口,IQueryable和IEnumerable。IQueryable用于延迟执行查询,而IEnumerable则立即执行。IQueryable通常用于数据库查询,因为它允许编译器生成更有效的SQL语句;...

    vs2008视频教程3:VS2008新特性之LINQ入门

    LINQ是一种语言集成查询机制,允许开发者使用类似SQL的语法在各种数据源上执行查询,包括数据库、XML文档、集合以及任何实现了IEnumerable或IQueryable接口的对象。这一特性极大地简化了代码,提高了代码的可读性...

    LINQ第3部分:IQueryable简介

    与IEnumerable接口(用于枚举数据源)不同,IQueryable接口不仅包含数据源,还包含了查询的逻辑。IQueryable中的T代表了数据源中的元素类型。通过IQueryable接口,我们可以延迟执行查询,直到真正需要结果时才执行,...

    LINQ.for.Visual.C.Sharp.2005

    这些数据源可以包括数据库、XML文档、集合以及任何实现了IEnumerable或IQueryable接口的对象。与传统的基于方法的查询不同,LINQ查询表达式提供了更直观的代码结构,有助于减少错误和提高代码可读性。 LINQ的关键...

    LINQ中文教程(WORD格式)

    LINQ to Object是LINQ的一个主要部分,它允许在任何实现了IEnumerable或IQueryable接口的对象上执行查询。这意味着你可以直接对内存中的数据结构(如数组、列表)进行查询,无需额外的中间层或数据访问技术。查询...

    C# 中的 LINQ 入门

    - **IQueryable**:这是一个特殊的接口,它不仅实现了 `IEnumerable<T>` 接口,还实现了 `IQueryable` 和 `IEnumerable` 接口。`IQueryable<T>` 主要用于支持延迟执行(Lazy Evaluation)和服务器端过滤(Server-...

    linq to sql 、linq to xml 、linq to object

    LINQ to Objects是LINQ最基础的部分,它允许开发者对任何实现了IEnumerable或IQueryable接口的对象进行查询,如数组、列表等。这使得在内存中的数据操作变得非常方便。学习LINQ to Objects通常涉及: - LINQ初体验...

    LINQ中文教程.doc

    LINQ to Object是LINQ的基础,它允许我们在任何实现了IEnumerable或IQueryable接口的对象上执行查询。在.NET中,大部分集合类型如List都实现了这些接口。通过使用LINQ to Object,我们可以对内存中的数据进行过滤、...

    Pro LINQ Language Integrated Query in C# 2008

    1. **LINQ to Objects**:这是对内存中对象集合进行查询的功能,允许开发者直接对任何实现了 IEnumerable 或 IQueryable 接口的对象进行查询,无需依赖特定的数据访问技术。 2. **LINQ to SQL**:这是一个数据层...

    LINQ中文教程LINQ中文教程

    通过LINQ,开发者可以使用相同的语法对各种数据源进行查询,包括数据库、XML文档、数组以及任何实现了IEnumerable或IQueryable接口的对象。 **LINQ to Objects** LINQ to Objects是LINQ的一个子集,它允许开发者...

    Microsoft.Press.Programming.Microsoft.LINQ.in.Microsoft.NET.Framework.4.Nov.2010.rar

    LINQ,作为.NET Framework的重要组成部分,是一种统一的查询语言,它允许开发者以一致的方式对各种数据源进行查询,包括SQL数据库、XML文档、数组、集合以及任何实现了IEnumerable或IQueryable接口的对象。...

Global site tag (gtag.js) - Google Analytics