首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

IQueryable继承自IEnumerable,是个标记接口。...可查询类型无需额外操作即可进行LINQ操作,若数据源在内存中不以可查询类型的形式存在,那么LINQ提供程序必须要先将数据源转换为可查询类型,如LINQ to XML将XML文件转换为可查询的XElement...扩展方法(又称为标准查询) System.Linq.Enumerable类和System.Linq.Queryable类,分别针对IEnumerable和IQueryable接口进行的扩展。...NET也提供了几个对IEnumerable和IQueryable接口进行操作的扩展方法,如: Cast和OfType。...两个接口 在LINQ中,一个查询表达式被编译为表达式树或者委托,查询结果为IEnumerable类型则被编译为委托,查询结果是IQueryable或IQueryable类型则被编译为表达式树

2.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IQueryable与IEnumberable的区别

    转自 http://www.cnblogs.com/fly_dragon/archive/2011/02/21/1959933.html IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代...也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...第一种:直接返回 IQueryable类型的查询,如下图所示: ? 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: ?...总结 IQueryable接口与IEnumberable接口的区别: IEnumerable 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable... 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

    54510

    .NET面试题系列 - LINQ to SQL与IQueryable

    LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。...LINQ to Object的数据源总是实现IEnumerable(所以不如叫做LINQ to IEnumerable),相对的,LINQ to SQL的数据源总是实现IQueryable将查询表达式转换为SQL语句并不保证一定可以成功。 IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。...它令IQueryable和IEnumerable一样,拥有强大的查询能力。 AsQueryable方法将IEnumerable转换为IQueryable。...在LINQ to SQL中lambda表达式首先被转化为表达式树,然后再转换为SQL语句。 我们试图实现一个可以将where这个lambda表达式翻译为SQL语句的查询提供器。

    1.7K10

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

    2】.扩展Linq to Object (应用框架具有查询功能) 我们知道LINQ所支持的查询范围主要在IEnumerable、IQueryable这两个方面,对于我们想要扩展LINQ的查询能力也主要集中在这两块...下面我们将重点分析Linq to Provider,这样我们才能真正的对LINQ进行高级应用。...IQueryable并非IEnumerable对象,无法实时的做出处理然后将结果返回给下一个方法接着执行。那么它如何将片段性的执行方法串成一个整的、完整的查询?...} 这是IQueryable接口中从IEnumerable继承下来的两个返回IEnumerator接口类型的方法,在我们目前使用的Linq to Sql、Linq to Entity中都会返回强类型的集合对象...3.3】.分段执行IQueryable中的子方法(Queryable中的扩展方法) 都知道Linq的查询是将一些关键字拼接起来的,行成连续的查询语义,这其中背后的原理文章上上下下也说过很多遍,我想也应该大致的了解了

    1.5K11

    C#内建接口:IQueryable

    这节来讲一下C#中的内建接口:IQueryable 。 IQueryable是 IEnumerable 接口的子接口,相比之下提供了更丰富的查询功能。...其主要用于 LINQ(Language Integrated Query)查询,它允许我们在编写类型安全的查询表达式时,将查询操作推迟到实际执行查询的时候,以便进行更有效的查询优化。...在 C# 中,常用的查询提供者是 Entity Framework(EF),它可以将 IQueryable 查询转换为适当的 SQL 查询语句,并与数据库进行交互以获取结果。...IQueryable 对象,针对这个查询对象,我们用 Where 方法筛选出偶数,再使用 Select 方法将每个偶数乘以 10取这样一个结果。...历史文章: C#内建接口:IEnumerable C#内建接口:IEquatable泛型

    31710

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

    也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...后,使得IEnumerable不再那么单调,变得更加强大和丰富。...} Console.WriteLine("OK"); Console.ReadKey(); } 注意红色代码部分,在用linq...第一种:直接返回 IQueryable类型的查询,如下图所示: 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: 总结 IQueryable接口与IEnumberable...接口的区别:  IEnumerable 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable 是将Skip ,take 这些方法表达式翻译成

    45050

    .NET面试题系列 - LINQ:性能

    注意当你返回IEnumerable时,你并没有开始遍历这个序列(只有当你强制LINQ执行时,才会执行这个返回IEnumerable的方法)。...所以在使用ORM时,如果它用到了IQueryable,请将你的查询也写成表达式而不是委托的形式。...你可以通过在IEnumerable上调用AsQueryExpr方法来令LinqOptimizer优化你的LINQ语句。使用Run方法执行: ?...LINQ的额外开销在于将lambda表达式转换为委托的形式,而foreach不需要。虽然这一点点额外开销对于普通的情况基本可以忽略,但如果重复一千万次,则性能可能会有较为明显的差异。...避免过早的ToList,返回IEnumerable/ IQueryable类型的巨大规模的数据。 是否需要重复极其多次运行相同的LINQ语句?考虑使用foreach或者PLINQ来优化性能。

    2.6K40

    金三银四面试:C#.NET面试题中高级篇5-Linq和EF

    4.如何提高LINQ性能问题? 5.什么是IEnumerable? 6.IEnumerable的缺点有哪些? 7.延迟执行 (Lazy Loading)是什么? 8.LINQ可视化工具简单介绍一下?...一般来说,返回另外一个序列(通常为IEnumerable或IQueryable)的操作,使用延迟执行,而返回单一值的运算,使用立即执行。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。...LINQ to Object的数据源总是实现IEnumerable(所以不如叫做LINQ to IEnumerable),相对的,LINQ to SQL的数据源总是实现IQueryable并使用Queryable...将查询表达式转换为SQL语句并不保证一定可以成功。 10.除了EF,列举出你知道的ORM框架?

    4.2K30

    了解LINQ

    本文主要的是泛谈LINQ是啥?以及常见的用法大纲如下: LINQ的那些根基 LINQ的一些基本用法 LINQ的根基 IEnumerable和IEnumerator 为啥能够被foreach?...实际上,能够被foreach的对象,一定是实现了带有返回值的IEnumerator的GetEnumerator()方法的接口,而.NET内置的该接口则是IEnumerable,一般指的是IEnumerable...的对象就是一个实现了IEnumerable的可被枚举的集合 LINQ的基本用法 扩展方法在LINQ的应用:LINQ的流式语法 LINQ的方法一般都是通过扩展方法了扩展的,就如最常用的几个,Where,Any...的延迟执行:IQueryable 首先我们来看看IQueryable的接口定义: public interface IQueryable : IEnumerable {...里的那个表达式树属性Expression,而像LINQ To Sql或者是EFCore等需要IQueryable这种解释型的就是去实现了IQueryProvider里面的方法 参考 《C#7.0核心技术指南

    89920

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

    本文主要学习记录以下内容:   建议29、区别LINQ查询中的IEnumerable和IQueryable   建议30、使用LINQ取代集合中的比较器和迭代器   建议31、在LINQ查询中避免不必要的迭代...建议29、区别LINQ查询中的IEnumerable和IQueryable   LINQ查询方法一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:     Enumerable...简单的来表述就是:本地数据源用IEnumerable,远程数据源用IQueryable。   ...LINQ to SQL引擎最终会将表达式树转化成为相应的SQL语句,然后在数据库中执行。   那么到底什么时候使用IQueryable,什么时候使用IEnumerable呢?...在使用IQueryable和IEnumerable的时候还需要注意一点,IEnumerable查询的逻辑可以直接用我们自己所定义的方法,IQueryable则不能使用自定义的方法

    96350

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

    这些方法中的大多数都作用于序列;其中序列指其类型实现 IEnumerable 接口或 IQueryable 接口的对象。 标准查询运算符提供包括筛选、投影、聚合、排序等在内的查询功能。...共有两组 LINQ 标准查询运算符,一组作用于类型 IEnumerable 的对象,另一组作用于类型 IQueryable 的对象。...此外,多个标准查询运算符方法作用于那些基于 IEnumerable 或 IQueryable 的类型外的类型。...这些方法(Cast(IEnumerable) 和 OfType(IEnumerable))均允许在 LINQ 模式中查询非参数化或非泛型集合。...对于在内存中集合上运行的方法(即扩展 IEnumerable 的那些方法),返回的可枚举对象将捕获传递到方法的参数。 在枚举该对象时,将使用查询运算符的逻辑,并返回查询结果。

    68820

    C#规范整理·集合和Linq

    如果一定要动态改变数组的长度,一种方法是将数组转换为ArrayList或List<T>,需要扩容时,内部数组将自动翻倍扩容 还有一种方法是用数组的复制功能。...13.区别LINQ查询中的IEnumerable<T>和IQueryable<T># LINQ查询方法一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了...LINQ to SQL引擎最终会将表达式树转化成为相应的SQL语句,然后在数据库中执行。 那么,到底什么时候使用IQueryable<T>,什么时候使用IEnumerable<T>呢?...简单表述就是:本地数据源用IEnumerable<T>,远程数据源用IQueryable<T>。...注意 在使用IQueryable<T>和IEnumerable<T>的时候还需要注意一点,IEnumerable<T>查询的逻辑可以直接用我们自己所定义的方法,而IQueryable<T>则不能使用自定义的方法

    22730
    领券