首页 / 教程列表 / LINQ教程 / LINQ操作符之OfType

LINQ操作符之OfType

1247 更新于: 2021-11-08 读完约需 7 分钟

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

本文永久链接码友网 » LINQ教程 » LINQ操作符之OfType 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册