IQueryable接口与IEnumberable接口的区别

 2023-09-11 阅读 17 评论 0

摘要:简单解释一下:从网上看到IQueryable接口与IEnumberable接口的区别,都是简单的说了一下下面第一点的原因,没有实际的代码,我就简单的在叙述一下其区别的详细的过程。 1:这是从网上找的区别的原因,好多都是这同样的解释: IEnu

简单解释一下:从网上看到IQueryable接口与IEnumberable接口的区别,都是简单的说了一下下面第一点的原因,没有实际的代码,我就简单的在叙述一下其区别的详细的过程。 

1:这是从网上找的区别的原因,好多都是这同样的解释:

IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

variable是什么接口,2:我设置一个查询,代码如下:

//返回IEnumerable开始

var set3 = (from c in db.cms_certificateDetails select c).OrderByDescending(c => c.id).AsEnumerable()
.Skip(150).Take(10);
foreach (var cmsCertificateDetailse in set3)
{
Console.WriteLine(cmsCertificateDetailse.czry + ";" + cmsCertificateDetailse.kddh + "\r\n");//打印结果
}

用sql server profiler监视的sql如下:

抽象类和接口的区别和联系?SELECT
[Extent1].[id] AS [id],
[Extent1].[kddh] AS [kddh],
[Extent1].[czry] AS [czry],
[Extent1].[yjnr] AS [yjnr],
[Extent1].[tjTime] AS [tjTime],
[Extent1].[bz] AS [bz],
[Extent1].[forId] AS [forId]
FROM [dbo].[cms_certificateDetails] AS [Extent1]
ORDER BY [Extent1].[id] DESC

 //返回IEnumerable结束

 

 //返回IQueryable开始

主板sata接口1234区别? var set4 = (from c in db.cms_certificateDetails select c).OrderByDescending(c => c.id).AsQueryable()
.Skip(150).Take(10);
foreach (var cmsCertificateDetailse in set4)
{
Console.WriteLine(cmsCertificateDetailse.czry + ";" + cmsCertificateDetailse.kddh + "\r\n");//打印结果
}

用sql server profiler监视的sql如下:

SELECT TOP (10)
[Extent1].[id] AS [id],
[Extent1].[kddh] AS [kddh],
[Extent1].[czry] AS [czry],
[Extent1].[yjnr] AS [yjnr],
[Extent1].[tjTime] AS [tjTime],
[Extent1].[bz] AS [bz],
[Extent1].[forId] AS [forId]
FROM ( SELECT [Extent1].[id] AS [id], [Extent1].[kddh] AS [kddh], [Extent1].[czry] AS [czry], [Extent1].[yjnr] AS [yjnr], [Extent1].[tjTime] AS [tjTime], [Extent1].[bz] AS [bz], [Extent1].[forId] AS [forId], row_number() OVER (ORDER BY [Extent1].[id] DESC) AS [row_number]
FROM [dbo].[cms_certificateDetails] AS [Extent1]
) AS [Extent1]
WHERE [Extent1].[row_number] > 150
ORDER BY [Extent1].[id] DESC

 //返回IQueryable结束

2.0和3.0usb接口区别、 

3:这下就看出来了,返回IQueryable类型的方法,执行条件查询是放到数据库中的,返回到内存的数据是已经过滤的,然而返回IEnumerable类型的方法,执行条件肯定是从内存中进行过滤的,返回到内存的数据是没有经过过滤的!

转载于:https://www.cnblogs.com/LpRightNow/p/3680162.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/46144.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息