在C#中,LINQ(Language Integrated Query)提供了强大的查询能力,允许我们以声明式的方式处理和查询数据集合。在处理类型多样化的集合时,OfType<T>() 方法和使用 case 语句在查询中进行类型过滤或转换变得十分有用。这两种方法可以帮助我们在LINQ查询中处理不同类型的元素。
| Cast | 执行一个集合的元素的转换到一个指定类型 | 使用显式类型范围变量。例如:从str在字符串String中 |
|---|---|---|
| OfType | 在它们的基础上过滤值,这取决于它们的能力,以被转换为特定类型 |
C#private void btnSearch_Click(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
IEnumerable<int> ret = al.Cast<int>();//非泛型转泛型
foreach (var item in ret)
{
lstMain.Items.Add(item);
}
}
Cast操作符用于将一个类型为IEnumerable的集合对象转换为IEnumerable<T>类型的集合对象。
C#private void btnSearch_Click(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add("a");
IEnumerable<int> ret = al.OfType<int>();//非泛型转泛型
foreach (var item in ret)
{
lstMain.Items.Add(item);
}
}
OfType操作符与Cast操作符类似,用于将类型为IEnumerable的集合对象转换为IEnumerable<T>类型的集合对象。不同的是,Cast操作符会视图将输入序列中的所有元素转换成类型为T的对象,如果有转换失败的元素存在Cast操作符将抛出一个异常;而OfType操作符仅会将能够成功转换的元素进行转换,并将这些结果添加到结果序列中去。与Cast操作符相比,OfType操作符更加安全。

本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!