///定义Car类型
public class Car
{
public string PetName = string.Empty;
public string Color = string.Empty;
public int Speed;
public string Make = string.Empty;
}
ArrayList myCars = new ArrayList() {
new Car{PetName="Henry",Color="Silver",Speed=100,Make="BMW"},
new Car{ PetName="Daisy",Color="Tan",Speed=98,Make="BMW"},
new Car{PetName="Mary",Color="Black",Speed=55,Make="VW"},
new Car{ PetName="Clunker",Color="Rust",Speed=5,Make="Yugo"},
new Car{ PetName="Melvin",Color="Whiter",Speed=43,Make="Ford"}};
//linq的查询运算是设计用于任何实现了IEnmerabler<T>接口的类型的
//System.Collections中传统的非泛型集合并没有实现IEnumberable<T>接口,所以不能直接使用linq
//但是我们可以用泛型Enumberable.OfType<T>()方法来对包含在这些非泛型集合里的数据进行迭代操作。
IEnumerable<Car> myCarEnmu=myCars.OfType<Car>();
var resuit = from q in myCarEnmu
where q.Speed > 55
select q;
///传统的集合不能直接操作。
var wrog=from m in myCars //报错,未能找到ArrayList中where.
where m.//这个地方点不出来属性
///利用OfType<T>()筛选数据
///非泛型集合类型可以包含任何数据项,因为这些容器类的成员类型是Object,
///ofType<T>()可以过滤出那些类型不同于迭代操作中所指定的类型T的元素
ArrayList myStuff = new ArrayList();
myStuff.AddRange(new object[] { 10,400,8,false,new Car(),"string Data"});
//过滤出不是Int类型的
IEnumerable<int> myInts = myStuff.OfType<int>();
foreach (var itme in myInts)
{
Console.WriteLine(itme);
}
Console.ReadKey();