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
发表评论
登录用户才能发表评论, 请 登 录 或者 注册