LINQ查询语法中的OfType谓词
OfType
操作符用于根据指定的类型过滤IEnumerable
中的元素,它返回一个包含指定类型的IEnumerable<T>
的子集合。
以下示例演示了如何使用OfType
操作符筛选集合list
中不同类型(其中,list
集合中包含的元素类型有:string,int,double)的元素:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp2
{
public class Program
{
static void Main()
{
var list = new List<object> { "Tom", "Jack", 10, 20, "Prince", "Curry", 50.5d };
// 1.使用OfType<string>筛选出list集合中类型为string的元素
Console.WriteLine("筛选出[string]类型的元素...");
var result1 = list.OfType<string>();
foreach (var item in result1)
{
Console.WriteLine(item);
}
// 2.使用OfType<int>筛选出list集合中类型为string的元素
Console.WriteLine("筛选出[int]型的元素...");
var result2 = list.OfType<int>();
foreach (var item in result2)
{
Console.WriteLine(item);
}
// 3.使用OfType<double>筛选出list集合中类型为string的元素
Console.WriteLine("筛选出[double]类型的元素...");
var result3 = list.OfType<double>();
foreach (var item in result3)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
输出结果为:
筛选出[string]类型的元素...
Tom
Jack
Prince
Curry
筛选出[int]型的元素...
10
20
筛选出[double]类型的元素...
50.5
对应的LINQ查询语法为:
var list = new List<object> { "Tom", "Jack", 10, 20, "Prince", "Curry", 50.5d };
// 1.使用OfType<string>筛选出list集合中类型为string的元素
var result1 = from x in list.OfType<string>() select x;
// 2.使用OfType<int>筛选出list集合中类型为string的元素
var result2 = from x in list.OfType<int>() select x;
// 3.使用OfType<double>筛选出list集合中类型为string的元素
var result3 = from x in list.OfType<double>() select x;
在OfType()
方法之后,可以使用Where
方法进行进一步地数据筛选,如下:
static void Main()
{
var list = new List<object> { "Tom", "Jack", 10, 20, "Prince", "Curry", 50.5d };
// 1.使用OfType<string>筛选出list集合中类型为string的元素
Console.WriteLine("筛选出[string]类型的元素...");
var result1 = list.OfType<string>().Where(x => x.Contains("c"));
foreach (var item in result1)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
输出结果:
筛选出[string]类型的元素...
Jack
Prince
发表评论
登录用户才能发表评论, 请 登 录 或者 注册