C# Linq OfType() 方法的作用
C# Linq OfType() 方法是用于从集合中筛选出具有指定类型的元素的方法。在某些情况下,我们需要从一个集合中仅仅保留某一种类型的元素,这时我们就可以使用 OfType() 方法。
OfType() 方法可以作用于任何实现了 IEnumerable(T) 接口的类,包括数组、List
OfType() 方法返回的是一个 IEnumerable
C# Linq OfType() 方法的用法
OfType() 方法的用法非常简单,只需要使用语法IEnumerable<TResult> OfType<TResult>(this IEnumerable source)
即可。
其中,source 指要筛选的集合;TResult 指具有指定类型的元素的类型。
下面是使用 OfType() 方法的示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
object[] arr = { 1, 2, "hello", "world", 3.14 };
var query = arr.OfType<int>();
foreach (var item in query)
{
Console.WriteLine(item);
}
}
}
在上面的示例中,我们定义了一个数组 arr,其中包含 int、string 和 double 类型的元素。我们使用 OfType() 方法从中筛选出 int 类型的元素,并使用 foreach 循环打印输出。
输出结果为:
1
2
可以看到,输出结果只包含了 int 类型的元素。
C# Linq OfType() 方法的进阶应用
除了简单的类型筛选,OfType() 方法还可以用于实现复杂的条件筛选。例如,我们可以筛选出一个 List
using System;
using System.Collections.Generic;
using System.Linq;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
var list = new List<Person>
{
new Person { Name = "Li Ming", Age = 18 },
new Person { Name = "Zhang San", Age = 20 },
new Person { Name = "Li Si", Age = 22 },
new Person { Name = "Wang Wu", Age = 24 }
};
var query = list
.Where(p => p.Name.Contains("Li"))
.OfType<Person>()
.Where(p => p.Age > 20);
foreach (var person in query)
{
Console.WriteLine($"Name:{person.Name}, Age:{person.Age}");
}
}
}
在这个示例中,我们创建了一个 Person 类,包含姓名和年龄两个属性。我们将若干个 Person 对象添加到一个 List 中,然后使用 Linq 对其进行筛选和排序。
通过链式调用 Where()、OfType() 和 Where() 方法,我们最终得到了一个只包含年龄大于 20 岁、姓名中包含 “Li” 字样的人的集合,并使用 foreach 循环将其打印输出。
输出结果为:
Name:Li Si, Age:22
可以看到,输出结果只包含姓名中包含 “Li” 字样,并且年龄大于 20 的 Person 对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Linq的OfType()方法 – 返回序列中指定类型的元素 - Python技术站