`
long254229962
  • 浏览: 8811 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

IQueryable,IEnumerable,List

阅读更多
1.IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution)
2.IQueryable和IEnumerable在每次执行时都必须连接数据库读取,而IList读取一次后,以后各次都不需连接数据库。前两者很容易造成重复读取,性能低下,并且可能引发数据不一致性
3.IQueryable和IEnumerable的区别:IEnumberalb使用的是LINQ to Object方式,它会将AsEnumerable()时对应的所有记录都先加载到内存,然后在此基础上再执行后来的Query。所以上述TestIEnumerable例子中执行的SQL是"select top(5) ...",然后在内存中选择前两条记录返回。


example:(model1为iqeuryble或ienumerable或list)
     model      model1 = model.where(...)  model2 = model1.where(..)
IQueryble返回是是委托  延迟会推迟到最后 即 循环获取每个model2里的元素时读到内存

IEnumerable返回的是委托  但仅截止到该返回值 即  model2时读到内存

list 返回的是内存里的值,不延迟 
分享到:
评论

相关推荐

    C# IQueryable及IEnumerable区别解析

    通常,我们会在最后才使用`ToList()`、`ToArray()`等方法将`IQueryable`转换为`IEnumerable`,以便于遍历或处理查询结果。要注意的是,`AsEnumerable()`方法并不会触发查询,它只是将`IQueryable`转换为`IEnumerable...

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

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

    完美解决c# distinct不好用的问题

    IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> peopleList = new List(); peopleList.Add(new People { UserName = zzl, Email = 1 }); peopleList.Add(new People { UserName = zzl...

    c#使用linq把多列的List转化为只有指定列的List

    如果可能,尝试延迟执行(使用`IQueryable`而不是`IEnumerable`),直到需要结果时才执行实际的查询。此外,避免在查询中使用复杂的表达式,因为它们可能会导致性能下降。 ### 总结 通过C#的LINQ,我们可以轻松地...

    LinqToObject例题----101

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

    C# 中的 LINQ 入门

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

    linq示例代码 最全最好的C#linq教程

    2. IQueryable和IEnumerable:LINQ操作可以分为两类,一类是运行时执行的IEnumerable,适用于内存中的数据源;另一类是编译时执行的IQueryable,适用于数据库查询,如Entity Framework。 3. LINQ方法:除了查询...

    使用LINQ查询,linq基础

    ### 1.3 IQueryable与IEnumerable `IQueryable`接口代表一个可执行的查询,通常用于数据库查询,而`IEnumerable`接口代表可迭代的数据集合,适用于内存中的数据。两者都定义了`GetEnumerator()`方法,用于遍历数据,...

    net软件工程师面试宝典.docx

    - **IQueryable与IEnumerable**:IQueryable延迟执行,允许在数据库层面进行查询优化;IEnumerable将所有数据加载到内存中处理,适合小数据集。 - **ToList()**:将查询结果转换为List,方便进一步操作。 6. **...

    EF性能优化总结

    - **定义:** 使用`IQueryable`类型进行条件拼接,而不是在转换为`IEnumerable`后再添加条件。 - **优点:** 提高了查询性能,因为条件是在数据库级别执行的。 #### 二、数据获取方式 **1. Find() 方法:** - **...

    LinqInActionCodes

    3. IQueryable接口和IEnumerable接口:`IQueryable`接口用于数据库查询,支持延迟执行和编译时的优化;而`IEnumerable`接口则用于内存中的集合查询,两者都是LINQ查询的基础。 4. Lambda表达式:Lambda表达式是LINQ...

    两本LINQ电子书资料

    2. IQueryable和IEnumerable:这两个接口是LINQ的核心,分别代表延迟执行和立即执行的查询。IQueryable用于数据库查询,如Entity Framework中的数据上下文;IEnumerable用于内存中的集合查询。 3. LINQ提供者:不同...

    Apress.Pro.LINQ.Language.Integrated.Query.in.C.Sharp

    书中还会详细介绍`IQueryable`和`IEnumerable`接口的区别以及如何使用`yield`关键字创建迭代器,这些对于理解LINQ的工作原理至关重要。此外,还将涉及查询的延迟执行和即时执行的概念,以及如何使用`AsEnumerable()`...

    5):查询表达式LINQ(3)_PDF

    `IQueryable<T>`接口是Linq查询的核心,它继承自`IEnumerable`,并提供了对查询表达式的访问和执行能力。`IQueryable<T>`类型包含了一系列的方法,如`CreateQuery`和`Execute`,这些方法允许在不同类型的提供者上...

    Visual Studio 2008 语言集成查询(LINQ)之入门篇

    5. **IQueryable接口和IEnumerable接口** IQueryable接口表示可执行的查询,其内部包含一个表达树,可以延迟执行。IEnumerable接口代表可迭代的集合,用于遍历数据。 6. **查询的执行** LINQ查询分为立即执行...

    LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习

    4. ** IQueryable 和 IEnumerable**:这两个接口是LINQ查询的基础。`IQueryable`代表延迟执行的查询,它允许在执行时进行更复杂的操作;`IEnumerable`则代表可枚举集合,用于逐个处理元素。 ### LINQ的基本操作 1....

    Linq基础学习资料,通俗易懂

    `Queryable`与`Enumerable`类似,但它针对的是查询表达式类型(如`IQueryable<T>`),主要用于处理数据库查询。 ##### 4.3 System.Linq.Lookup,TElement> `Lookup,TElement>`是一个键值对集合,用于存储分组后的...

    关于c# 2008 里linq

    - **Enumerable和Queryable接口**:`IEnumerable<T>`和`IQueryable<T>`接口定义了数据源的基本操作。前者用于在内存中的集合进行迭代,后者则用于表达式树的构建和执行。 - **Lambda表达式**:Lambda表达式是LINQ中...

    linq的简单示例 c#linq的使用

    查询并不立即执行,而是返回一个表示查询的IQueryable或IEnumerable对象。 - 使用`ToList()`, `ToArray()`或`First()`等方法执行查询并获取结果。 4. LINQ查询表达式示例: ```csharp var query = from student in...

    LINQ实战+LINQ高级编程 2本电子书 中文

    3. **IQueryable接口与IEnumerable接口**:`IQueryable`接口用于表示可以执行查询的类型,而`IEnumerable`接口则用于表示可枚举的数据集。两者都是LINQ查询的核心接口。 4. **提供者(Providers)**:LINQ的工作...

Global site tag (gtag.js) - Google Analytics