c#中ofType的用法
原文:http://www.cnblogs.com/Janzen/p/5128749.html
该关键字主要用在非泛型到泛型之间的转化,在有些场合还是很有用的;比如:在使用非泛型的时候,想使用LINQ表达式进行结果查询
场景一:声明非泛型数组
System.Collections.ArrayList fruits = new System.Collections.ArrayList(5); fruits.Add("Mango"); fruits.Add("Orange"); fruits.Add("Apple"); fruits.Add(32); fruits.Add("Banana");
若我们想得到含有“n”字母的水果,则使用如下方式
现将fruits转化为兼容 IEnumerable<T>的类型
var query = fruits.OfType<string>(); //只取出满足 string 的对象;
在使用LINQ表达式即可完成目的:
var result= from c in query where c.contain("n") select c;
场景二:当数据库的表存在继承关系(Infomations为基表,Docments为子表)
通过基表的Id,查询并返回子表的数据,
返回类型为子表:
这种方法适用于多个类的通用属性很多,差异属性比较少的情况,且数据量不是极大的情况下,
因为在数据库中,基类表和子表存储在不同的表中,此操作其实本质是关联查询,在数据量特别大,查询效率会受影响。