咱们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable。可是,很遗憾的是诸如ArrayList这样的非泛型集合并无实现IEnumerable。那咋办呢?总不能把这么绚丽的Linq技术对非泛型关上大门把!~其实,方法仍是有的。spa
场景还原:code
定义一个car的类:对象
class Car { public int CurrentSpeed; public int MaxSpeed; public string PetName; }
对ArrayList 装载一些数据:blog
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操做,会报错:string
解决方法以下:ast
var myAllCars = cars.Cast<Car>(); var result = from c in myAllCars where c.MaxSpeed > 10 select c;
var myAllCars = cars.OfType<Car>(); var result = from c in myAllCars where c.MaxSpeed > 10 select c;
OfType 除了上面转换非泛型以外,还有一个功能是刷选数据的功能。class
这个很简单泛型