LINQ语句中的.linq asenumerablee 和 AsQueryable的区别

LINQ语句中的.AsEnumerable 和 AsQueryable的区别_百度知道
LINQ语句中的.AsEnumerable 和 AsQueryable的区别
  AsEnumerable()与相对应的.AsQueryable()的区别:AsEnumerable将一个序列向上转换为一个IEnumerable, 强制将Enumerable类下面的查询操作符绑定到后续的子查询当中。AsQueryable将一个序列向下转换为一个IQueryable, 它生成了一个本地查询的IQueryable包装。  .AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。  .ToList()立即执行  当你需要操作结果的时候,用.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/IEnumerable&/IQueryable  .AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。比如我们需要显示两个部门的员工时,部门可以先取出放置在List中,然后再依次取出各个部门的员工,这时访问的效率要高一些,因为不需要每次都访问数据库去取出部门。  IQueryable实现了IEnumberable接口。但IEnumerable&T& 换成IQueryable&T&后速度提高很多。原因:  IQueryable接口与IEnumberable接口的区别:& IEnumerable&T& 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable&T& 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。  IEnumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。
其他类似问题
为您推荐:
虚拟机只会在特定的点记录这些信息,这样会需要大量的额外空间,所以安全点太少会使用GC等待时间变长,而这些点就叫安全点,只有到达安全点才会暂停。程序执行时并不是所有地方都能停顿下来因为不可能每条指令都生成一个OopMap,安全点太多会使负荷增大
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁LINQ语句中的.AsEnumerable 和 AsQueryable的区别-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
LINQ语句中的.AsEnumerable 和 AsQueryable的区别
来源:互联网 发表时间: 19:51:00 责任编辑:李志喜字体:
为了帮助网友解决“LINQ语句中的.AsEnumerable 和 AsQueryable的区别”相关的问题,中国学网通过互联网对“LINQ语句中的.AsEnumerable 和 AsQueryable的区别”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:LINQ语句中的.AsEnumerable 和 AsQueryable的区别,具体解决方案如下:解决方案1:
Open();T&gt.Add(&SQLEXPRESS。多次调用 AsEnumerable 方法将返回多个独立的可查询对象;
table,因此您必须调用AsEnumerable 方法来将 DataTable 用作 LINQ 查询的From 子句中的源,因为不需要每次都访问数据库去取出部门。语言集成查询 (LINQ) 查询适用于实现IEnumerable&lt,不会立即执行。MSDN; IQueryable&T& ).AddRange(resultList)。原因.Add(& return lst。但IEnumerable&lt。[csharp] view plaincopyusing System: &quot.\) remark = &), &T&gt, Single.AsEnumerable()延迟执行;&#47,con);T&
Program inst = new Program(); 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了; resultList = from x in _dataDicListT&).CRemaks2 == remark
foreach (string productName in productNames) {
CIEnumerable /string&gt.Rows.AsEnumerable()虽然延迟执行,Course where SC.AsEnumerable() select d, ToLUser ID= && 换成IQueryable&lt,如果仅仅是用来查询不需要进一步使用结果集.AsEnumerable()是延迟执行的;
Console,LINQ 不能直接从数据集对象中查询;); 接口或IQueryable 接口的数据源;
static void Main(string[] args) {
DataTable table = new DataTable();Product Names,实际上什么都没有发生;Cname&quot。,实际上什么都没有发生 foreach(var res in dslp) {
R;0&quot.的时候)才执行;TbaDatadic&gt。您也可以通过返回 IEnumerable&lt,所以需要使用AsEnumerable 方法返回一个泛型的对象以支持LINQ 的查询操作;)。下面就是。AsEnumerable 方法返回的可枚举对象永久绑定到产生它的DataTable.Add(&quot, string remark) { if (remark .NewList();select * from SC,实际上什么都没有发生;.AsQueryable()的区别。;IQueryable.DisplayProducts(table);&#92.Field&lt.CDatagroup == dicGroup && x。此对象可用在 LINQ 表达式或方法查询中;
var lst = TbaDatadicLProductName&。例如;3&quot.AsEnumerable()与相对应的.ToString()),它并不是把所有数据都加载到内存里来才进行条件过滤,当真正使用对象的时候(例如调用。比如我们需要显示两个部门的员工时; }
上述代码使用LINQ 针对数据集中的数据进行筛选和整理.Add(& 是将Skip .WriteLine(&quot.Columns.AsEnumerable()是延迟发生;);Password=sa&
table.Tables[&.。IQueryable实现了IEnumberable接口; SqlConnection con = new SqlConnection(strcon),就用;1&quot,不会立即执行.RT&gt!= &quot,但还是访问数据库.AsQueryable() 。当你调用;Chai&quot.AsEnumerable() select products,强制从数据库中读取所有数据到内存先.; string strsql = &o&;
inst!= & using Smytable& 对象;1&quot, &quot。AsQueryable将一个序列向下转换为一个IQueryable, 强制将Enumerable类下面的查询操作符绑定到后续的子查询当中.ToList()立即执行当你需要操作结果的时候,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令: IEnumerable&lt,其泛型参数T 为 DataRT&执行LINQ语句.WriteLine(productName);string&gt.R); /ProductName&ID&quot,否则;/
} } 项目中用到的IQueryable internal TbaDatadicList GetLookUpList(string dicG (&quot.ToList()直接取得结果放在内存中:IQueryable接口与IEnumberable接口的区别,部门可以先取出放置在List中.Fill(ds,而.AsEnumerable()&#47.Field&Tofu&
DataSet ds = new DataSet();Queso Cabrales&quot,这些对象全部绑定到源DataT2&quot:[csharp] view plaincopystring strcon = &quot。 该 DataTable 类不实现上述任何一个接口;创建表 var dslp = from d in tables, & SqlDataAdapter da = new SqlDataAdapter()。在使用LINQ 进行数据集操作时。IEnumerable跑的是Linq to Object.Columns, &],同样能够以一种面向对象的思想进行数据集中数据的筛选,用,这时访问的效率要高一些.,然后再依次取出各个部门的员工.AsEnumerable()的时候,并可以延迟执行.Cno=Cmytable& da.ToList();/.Add(&quot:AsEnumerable将一个序列向上转换为一个IE(&
class Program {
public void DisplayProducts(DataTable table) {
var productNames = from products in table,因为数据集对象不支持LINQ 查询.Data:返回一个IEnumerable&lt,这里的; DataTable tables=Persist Security Info=True:FData Source=; 对象来获取特定于域的自定义运算符(如CopyToDataTable),往往会看到,而IQueryable&后速度提高很多;1&quot, 它生成了一个本地查询的IQueryable包装.Write(res.AsEnumerable() 和 ;);Initial Catalog=Db_Example。.Clone()在写LINQ语句的时候
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号您的位置: >
linq中AsEnumerable和AsQueryable的区别
学习标签:
本文导读:用Linq来操作集合的时候会用到AsQueryable()和AsEnumerable(),何时该用AsQueryable()和何时该用AsEnumerable(),或许存在些疑惑。AsQueryable是在数据库中查询再返回数据,AsEnumerable是从数据库读取全部数据再在程序中查询。
在使用LINQ 进行数据集操作时,LINQ 不能直接从数据集对象中查询,因为数据集对象不支持LINQ 查询,所以需要使用AsEnumerable 方法返回一个泛型的对象以支持LINQ 的查询操作。
C# 代码 &&复制
string strcon = &Data Source=.\SQLEXPRESS;Initial Catalog=Db_EPersist Security Info=TUser ID=Password=sa&;
SqlConnection con = new SqlConnection(strcon);
con.Open();
string strsql = &select * from SC,Course o&;
SqlDataAdapter da = new SqlDataAdapter(strsql,con);
DataSet ds = new DataSet();
da.Fill(ds, &mytable&);
DataTable tables=ds.Tables[&mytable&]; //创建表
var dslp = from d in tables.AsEnumerable()//执行LINQ语句,这里的.AsEnumerable()是延迟发生,不会立即执行,实际上什么都没有发生
foreach(var res in dslp)
Response.Write(res.Field&string&(&Cname&).ToString());
一、linq中AsEnumerable和AsQueryable的区别
1、AsEnumerable()是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First, Single, ToList....的时候)才执行。
2、AsEnumerable将一个序列向上转换为一个IEnumerable, 强制将Enumerable类下面的查询操作符绑定到后续的子查询当中。
3、AsQueryable将一个序列向下转换为一个IQueryable, 它生成了一个本地查询的IQueryable包装。
4、AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。
5、ToList()立即执行
6、当你需要操作结果的时候,用.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/IEnumerable /IQueryable
7、AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。比如我们需要显示两个部门的员工时,部门可以先取出放置在List中,然后再依次取出各个部门的员工,这时访问的效率要高一些,因为不需要每次都访问数据库去取出部门。
8、IQueryable实现了IEnumberable接口。但IEnumerable&T& 换成IQueryable&T&后速度提高很多。
9、IQueryable接口与IEnumberable接口的区别:& IEnumerable&T& 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable&T& 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。
10、IEnumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。
二、AsEnumerable和AsQueryable的实例
C# 代码 &&复制
using (testContext context = new testContext())
var query = (from item in context.Users.AsQueryable()
where item.id & <span style="color: #
select item.id).ToList();
var query2 = (from item in context.Users.AsEnumerable()
where item.id & <span style="color: #
select item.id).ToList();
服务器端sql
SQL 代码 &&复制
--AsQueryable
[Extent1].[id] AS [id]
FROM [dbo].[User] AS [Extent1]
Where [Extent1].[id] & <span style="font-weight: color: #
--AsEnumerable
[Extent1].[id] AS [id],
[Extent1].[usn] AS [usn],
[Extent1].[pwd] AS [pwd],
[Extent1].[created] AS [created]
FROM [dbo].[User] AS [Extent1]
C# 代码 &&复制
using (testContext context = new testContext())
var query = (from item in context.Users.AsQueryable()
where item.id & <span style="color: #
orderby item.id ascending
select item.id).Skip(<span style="color: #).Take(<span style="color: #).ToList();
var query2 = (from item in context.Users.AsEnumerable()
where item.id & <span style="color: #
orderby item.id ascending
select item.id).Skip(<span style="color: #).Take(<span style="color: #).ToList();
服务器端sql
SQL 代码 &&复制
--AsQueryable
Select TOP (<span style="font-weight: color: #)
[Filter1].[id] AS [id]
FROM ( Select [Extent1].[id] AS [id], row_number() OVER (ORDER BY [Extent1].[id] ASC) AS [row_number]
FROM [dbo].[User] AS [Extent1]
Where [Extent1].[id] & <span style="font-weight: color: #
AS [Filter1]
Where [Filter1].[row_number] & <span style="font-weight: color: #
orDER BY [Filter1].[id] ASC
--AsEnumerable
[Extent1].[id] AS [id],
[Extent1].[usn] AS [usn],
[Extent1].[pwd] AS [pwd],
[Extent1].[created] AS [created]
FROM [dbo].[User] AS [Extent1]
您可能感兴趣
一月好评排行榜在写LINQ语句的时候,往往会看到.AsEnumerable() 和 .AsQueryable() 。例如:
string strcon = "Data Source=.\\SQLEXPRESS;Initial Catalog=Db_EPersist Security Info=TUser ID=Password=sa";SqlConnection con = new SqlConnection(strcon);con.Open();string strsql = "select * from SC,Course o";SqlDataAdapter da = new SqlDataAdapter(strsql,con);DataSet ds = new DataSet();da.Fill(ds, "mytable");DataTable tables=ds.Tables["mytable"]; //创建表var dslp = from d in tables.AsEnumerable()//执行LINQ语句,这里的.AsEnumerable()是延迟发生,不会立即执行,实际上什么都没有发生foreach(var res in dslp)
Response.Write(res.Field&string&("Cname").ToString());}
&&&&&& 上述代码使用LINQ 针对数据集中的数据进行筛选和整理,同样能够以一种面向对象的思想进行数据集中数据的筛选。在使用LINQ 进行数据集操作时,LINQ 不能直接从数据集对象中查询,因为数据集对象不支持LINQ 查询,所以需要使用AsEnumerable 方法返回一个泛型的对象以支持LINQ 的查询操作。
.AsEnumerable()是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First, Single, ToList....的时候)才执行。下面就是.AsEnumerable()与相对应的.AsQueryable()的区别:AsEnumerable将一个序列向上转换为一个IEnumerable, 强制将Enumerable类下面的查询操作符绑定到后续的子查询当中。AsQueryable将一个序列向下转换为一个IQueryable, 它生成了一个本地查询的IQueryable包装。
.AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。
.ToList()立即执行
当你需要操作结果的时候,用.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/IEnumerable&/IQueryable
.AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。比如我们需要显示两个部门的员工时,部门可以先取出放置在List中,然后再依次取出各个部门的员工,这时访问的效率要高一些,因为不需要每次都访问数据库去取出部门。
IQueryable实现了IEnumberable接口。但IEnumerable&T& 换成IQueryable&T&后速度提高很多。原因:
IQueryable接口与IEnumberable接口的区别:& IEnumerable&T& 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable&T& 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。
IEnumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。
阅读(...) 评论()<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 linq执行sql语句 的文章

 

随机推荐