Linq操做非泛型集合

咱们都知道,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

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

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

方法二。使用OfType<T>

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

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

这个很简单泛型

相关文章
相关标签/搜索