- mysql8.0和5.7区别
- 网站建设排名外链另类攻略
- ModelBuilder.Entity
- SEM营销和SEO优化之间有什么区别
- Xshell常见问题
- 离开百度的日子(点石内部交流贴)
- 浅谈交叉链接的必要性
- 经典SQL语句大全之应用篇
- 小程序开发中 40029 invalid code错误
- 全面解析抽象类和接口的区别、概念、使用场景、注意事项和优缺点
邮箱:
手机:15383239821
IEnumerable与IQueryable区别
1、IEnumerable 和 IQueryable的相同点
使用LINQ时,您会发现返回值IEnumerable和IQueryable,两者都对列表数据进行查询等操作。
IEnumerable和IQueryable是继承的关系,IQueryable 接口继承 IEnumerable 接口。
2、IEnumerable 和 IQueryable的区别
IEnumerable 和 IQueryable 都是 .NET 框架中提供的接口,用于表示可枚举的集合。但是,它们之间存在一些关键的区别。
IEnumerable 是所有可枚举对象的基接口,包括数组、集合、字符串等。它定义了基本的枚举操作,例如 GetEnumerator() 和 Count()。
IQueryable 是 IEnumerable 的扩展接口,它提供了 LINQ 查询的支持。IQueryable 中的查询操作会生成一个表达式树,该表达式树在执行时会转换为 SQL 查询。
假设数据库中有 1000 行。如果要使用 IEnumerable 创建这些行,.NET 会将所有行读取到内存中。它的写入、排序和过滤直接在内存中操作,因为所有信息都存在于内存中。使用 IQueryable 可以用 WHERE、SELECT、ORDER BY等对数据进行操作,并在数据端执行查询。
使用场景:
IEnumerable 适用于对内存中数据进行查询。
IQueryable 适用于对数据库、XML 文档等外部数据源进行查询。
lEnumerable:把数据取到内存中,在内存中查询
IQueryable:拼接好sql,直接从数据库中查询
那么什么时候选择使用IEnumerable 和 IQueryable呢?
在大多数情况下,我们应该使用 IEnumerable 来查询内存中的数据。如果需要查询外部数据源,例如数据库或 XML 文档,则应该使用 IQueryable。另外IQueryable可以使用强大的linq查询语法;可以执行延迟查询并将查询结果缓存起来,从而提高性能。
不同的WHERE方法
1、对普通集合和DbSet调用的Where方法,虽然用起来一样,但是“转到定义”后看到的是不同的方法。
2、普通集合的版本(IEnumerable)是在内存中过滤(客户端评估),而IQueryable版本则是把查询操作翻译成SQL语句(服务器端评估)。
IEnumerable在客户端内存中一条一条处理的,
IQueryable 翻译成sql语句扔到数据库服务器中去执行。
数据量较大的时候,IQueryable性能较高。
通常客户端评估的效率会低一些。
所以这就是 EFCore 都是采用IQueryable 版本中的方法的原因,因为这些操作会会翻译成sql语句到数据库服务器中去执行
-
2021-05-14匹配中文、字母、数字的正则表达式
-
2012-06-30关键词怎么确定?
-
2010-12-09链接有那几种,网站优化时应该注意什么?
-
2013-06-15C# Eval在aspx页面中的用法及作用 .
-
2019-11-25dtcms标签语法说明
