博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq操作非泛型集合
阅读量:5925 次
发布时间:2019-06-19

本文共 864 字,大约阅读时间需要 2 分钟。

我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable。但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable。那咋办呢?总不能把这么绚丽的Linq技术对非泛型关上大门把!~其实,方法还是有的。

场景还原:

定义一个car的类:

class Car  {    public int CurrentSpeed;    public int MaxSpeed;    public string PetName;  }

对ArrayList 装载一些数据:

ArrayList cars = new ArrayList();      cars.Add(new Car { CurrentSpeed = 21, MaxSpeed = 2, PetName = "aa" });      cars.Add(new Car { CurrentSpeed = 212, MaxSpeed = 22, PetName = "aa1" });

如果强制使用Linq操作,会报错:

 

解决方法如下:

方法一。用Cast<T> 关键字

var myAllCars = cars.Cast
(); var result = from c in myAllCars where c.MaxSpeed > 10 select c;

方法二。使用OfType<T>

var myAllCars = cars.OfType
(); var result = from c in myAllCars where c.MaxSpeed > 10 select c;

 OfType 除了上面转换非泛型之外,还有一个功能是刷选数据的功能。

这个很简单

转载地址:http://txavx.baihongyu.com/

你可能感兴趣的文章
读jQuery之二十(Deferred对象)
查看>>
彻底搞定C指针-函数名与函数指针[转]
查看>>
2012平安夜
查看>>
html页面音乐播放器_Embed代码
查看>>
GNU ARM 汇编指令[转载]
查看>>
解决iPhone网络软件在睡眠情况断线问题
查看>>
C# 文件操作详解(一)---------File类
查看>>
Imageready(IR)动画介绍
查看>>
JQuery真的不难~第六回 JQ中的异步调用方式
查看>>
android关于获取摄像头帧数据转成图片
查看>>
Linux虚拟文件系统(VFS)
查看>>
poj 2411 Mondriaan's Dream
查看>>
深入了解Oracle ASM(一):基础概念
查看>>
JavaScript中使Promise模式进行异步编程
查看>>
c++中的new_handler
查看>>
insert /*+ APPEND */
查看>>
差异分析定位Ring 3保护模块
查看>>
hdu 2579 BFS
查看>>
[转]让Linux的tty界面支持中文
查看>>
Introduction to Change Data Capture (CDC) in SQL Server 2008[转]
查看>>