使用Enumerable.OfType<T>扩展方法实现非泛型集合的Linq查询
2011-04-05 21:34
1131 查看
Linq查询运算符设计用于任何实现了IEnumerable<T>接口的类型。但System.Collections中传统的非泛型容器类未实现IEnumerable<T>接口,在这些非泛型容器上怎样执行Linq查询呢?
我们可以使用扩展方法Enumerable.OfType<T>()扩展方法将非泛型容器转换为IEnumerable<T>类型后,再执行查询。Enumerable.OfType<T>扩展方法的原型为:
public static IEnumerable<T> OfType<T>(this IEnumerable source);
示例代码:
我们可以使用扩展方法Enumerable.OfType<T>()扩展方法将非泛型容器转换为IEnumerable<T>类型后,再执行查询。Enumerable.OfType<T>扩展方法的原型为:
public static IEnumerable<T> OfType<T>(this IEnumerable source);
示例代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace TestVar { class Program { static void Main(string[] args) { //创建整型数组 ArrayList intAry = new ArrayList { 1, 2, 3, 4, 5, 6 }; //将其转换为泛型容器 IEnumerable<int> intEnumable = intAry.OfType<int>(); //使用强类型立即获取查询结果 List<int> intList = (from x in intEnumable where x % 2 == 0 select x).ToList(); //输出查询结果 foreach (int v in intList) { Console.Write(v.ToString() + " "); } Console.ReadKey(); } } }
相关文章推荐
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 工作总结 for 另类写法 循环加时间 集合合并 也是用的 static class Enumerable (IEnumerable<T>的扩展方法) (IEnumerable<T> 的 工具类) (所有集合 数组都实现IEnumerable<T>)
- 解决 ”不允许在查询中显式构造实体类型“问题及使用其他方法实现返回 List<Model对象>或者IQueryable<Model对象>对象
- 窗体Controls的OfType<>方法的使用
- Enumerable.OfType<TResult> 方法 (IEnumerable)
- 使用Enumerable.SequenceEqual<TSource> 方法 (IEnumerable<TSource>, IEnumerable<TSource>)判断两个集合是否相同
- 讲解.NET 集合中使用Count属性和扩展方法Count<T>()区别
- 窗体Controls的OfType<>方法的使用
- Enumerable.All<(Of <(TSource>)>) 方法
- .NET/C#中对对象集合进行查询的方法 以及相关的 Predicate<T> 及 Action<T> 的用法
- (原创)利用扩展方法,给 IEnumerable<T> 增加一个生成 Html 的 select 标签的方法,不用 C# 中的反射技术
- Entity Framework DbSet<T>之Include方法与IQueryable<T>扩展方法Include的使用
- IEnumerable<T>与IQueryable<T>以及.net的扩展方法
- List<ExpendoObject> 对象使用Linq 查询.
- 扩展方法:给 IEnumerable<TSource> 扩展一个自定义数据源绑定的方法
- 使用<input type="file">实现文件上传
- .NET/C#中对对象集合进行查询的方法 以及相关的 Predicate<T> 及 Action<T> 的用法
- asp.net mvc 2 简简单单做开发 使用DataContext扩展方法Find<TEntity>(TEntity obj) 遇到的问题
- C#中使用BindingList 绑定DataGridView 可以实现动态绑定,优与List<T>集合的绑定
- AsParallel \AsQueryable<T>().ToList() [System.ArgumentOutOfRangeException was unhandled" 索引超出范围。必须为非负值并小于集合大小]解决方法