在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
操作符更加安全。
本文作者:rick
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!