c#中ofType的用法

原文:http://www.cnblogs.com/Janzen/p/5128749.html

该关键字主要用在非泛型到泛型之间的转化,在有些场合还是很有用的;比如:在使用非泛型的时候,想使用LINQ表达式进行结果查询

场景一:声明非泛型数组

System.Collections.ArrayList fruits = new System.Collections.ArrayList();
fruits.Add("Mango");
fruits.Add("Orange");
fruits.Add("Apple"); fruits.Add();
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为子表)

c#中ofType的用法

通过基表的Id,查询并返回子表的数据,

c#中ofType的用法

返回类型为子表:

c#中ofType的用法

这种方法适用于多个类的通用属性很多,差异属性比较少的情况,且数据量不是极大的情况下,

因为在数据库中,基类表和子表存储在不同的表中,此操作其实本质是关联查询,在数据量特别大,查询效率会受影响。

上一篇:FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具(转)


下一篇:单链表---java实现