IQueryable<T>和IEnumerable<T>的区别
2014-01-07 16:31
344 查看
IQueryable<T>和IEnumerable<T>的区别
IQueryable<T>(IEnumerable<T>的一个子接口)。LINQ to SQL 提供程序实现 IQueryable<T> 接口,用于查询关系数据存储。C#和 Visual Basic 编译器会将针对此类数据源的查询编译为代码,该代码在运行时将生成一个表达式目录树。然后,查询提供程序可以遍历表达式目录树数据结构,并将其转换为适合于数据源的查询语言。
而IEnumerable<T>在编译的时候,会直接生产代码,不会生产表达式目录树。
string[] arry = new string[] { "aa","bb","cc","dd"};
arry.Where(s => s.Length == 2).OrderByDescending(s => s).Select(s => s);
var b=arry.AsQueryable();
b.Where(s => s.Length == 2).OrderByDescending(s => s).Select(s => s);
如果是IEnumerable<T>的话
Where<T>( this IEnumerable<T>, Func<T, bool> ),
OrderByDescending<TSource,TKey>( this IEnumerable<TSource>,Func<TSource,TKey> ),
Select<TSource,TResult>( this IEnumerable<TSource>, Func<TSource,TResult> )
而IQueryable<T>会在Func<>外面包装一层Expression<>,
Where<T>( this IEnumerable<T>,Expression<Func<T, bool>> ),
OrderByDescending<TSource,TKey>( this IEnumerable<TSource>,Expression<Func<TSource,TKey>>),
Select<TSource,TResult>( this IEnumerable<TSource>, Expression<Func<TSource,TResult>> )
/article/6336508.html
相关文章推荐
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- 建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>
- 编写高质量代码改善C#程序的157个建议——建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- 区别linq查询中的IEnumerable<T>和IQueryable<T>
- 再讲IQueryable<T>,揭开表达式树的神秘面纱
- 返回 IQueryable<T> OR List<T>
- Understanding the implications of IQueryable<T>
- LINQ : IEnumerable<T> and IQueryable<T>区别
- LINQ查询中的IEnumerable<T>和IQueryable<T>
- List<T>,ArrayList,IEnumerable的区别
- 将不确定变为确定~DAL层向BLL层返回数据用IEnumerable<T>还是IQueryable<T>
- 编写高质量代码改善C#程序的157个建议[IEnumerable<T>和IQueryable<T>、LINQ避免迭代、LINQ替代迭代]
- 编写高质量代码改善C#程序的157个建议[IEnumerable<T>和IQueryable<T>、LINQ避免迭代、LINQ替代迭代]
- MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集(转)
- #include<iostream>、#include<iostream.h>和#include<stdio.h>的根本区别
- <context-param>与<init-param>的区别与作用
- <%%>与<scriptrunat=server>,<%=%>与<%#%>的区别
- IQueryable<T>获取查询计划(SQL)
- #include<>和#inlcude“”的区别