C# Linq的OfType()方法 – 返回序列中指定类型的元素

下面是C# Linq的OfType()方法的详细讲解:

C# Linq OfType() 方法的作用

C# Linq OfType() 方法是用于从集合中筛选出具有指定类型的元素的方法。在某些情况下,我们需要从一个集合中仅仅保留某一种类型的元素,这时我们就可以使用 OfType() 方法。

OfType() 方法可以作用于任何实现了 IEnumerable(T) 接口的类,包括数组、List、Queue、Stack、SortedList 等。

OfType() 方法返回的是一个 IEnumerable 对象,其中 TResult 是指定的类型。该对象中只包含具有指定类型的集合元素。

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 集合中所有年龄大于 20 岁,姓名中包含 “Li” 字样的人:

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技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • Kubernetes(K8S)基础知识

    Kubernetes(K8S)基础知识 Kubernetes是一种开源的容器编排平台,可以简化部署、扩展和管理容器化应用程序。在Kubernetes中,可以创建一个包含多个容器的集群,通过Kubernetes控制器自动对其进行维护和扩展。 基本概念 节点(Node):Kubernetes集群中的物理或虚拟机器,可以运行容器。 Pod:Kubernetes中的…

    C# 2023年5月31日
    00
  • 详解WPF如何在基础控件上显示Loading等待动画

    下面我会详细讲解如何在WPF基础控件上显示Loading等待动画的完整攻略。 使用WPF Toolkit自带的Loading动画 WPF Toolkit是一个由Microsoft约定和支持的开源项目,该项目包含了一些方便的控件和工具。其中就包含了Loading动画的控件。 第一步:引入WPF Toolkit 首先要引入WPF Toolkit,可以通过NuGe…

    C# 2023年6月6日
    00
  • ASP.NET Cache的一些总结分享

    ASP.NET Cache的一些总结分享 什么是缓存 缓存是一种用于优化应用程序性能的技术,通过将数据存储在内存中,可以更快地访问数据并减少对磁盘的访问次数。缓存通常用于存储频繁使用的数据,例如配置文件和数据库查询结果等。 缓存的优点 加快应用程序的响应时间 减少对数据源的访问次数 提高应用程序的可扩展性 ASP.NET Cache的基本用法 ASP.NET…

    C# 2023年6月3日
    00
  • C#贪吃蛇游戏实现分析

    C#贪吃蛇游戏实现分析 简介 贪吃蛇是一种经典的游戏,它简单而有趣,很适合拿来练习编程的基础功底。这篇文章主要介绍如何用C#来实现一个贪吃蛇游戏。 实现思路 数据结构 贪吃蛇游戏中的核心数据结构是“蛇”。一条蛇由若干个“节点”组成,每个节点表示蛇身的一部分。为了表示一个蛇,我们可以使用一个“链表”来存储这些节点。 除此之外,还需要记录蛇的方向、蛇的长度以及食…

    C# 2023年6月6日
    00
  • C# 字符串的连接(实例讲解)

    C# 字符串的连接(实例讲解) C# 中,字符串连接可以通过加号 “+” 或者 String.Concat 方法实现。在本文中,我们将介绍如何使用这些方法来连接 C# 字符串,并提供一些实例讲解。 使用加号 “+” 加号 “+” 是最简单的字符串连接方法。通过在两个字符串之间添加加号即可将它们连接在一起,得到一个新的字符串。例如: string str1 =…

    C# 2023年6月7日
    00
  • C#常用知识点简单回顾(有图有真相)

    “C#常用知识点简单回顾(有图有真相)” 的攻略主要内容包括以下几个方面: 1. C#基础语法回顾 这一部分主要讲解C#的基础语法,并通过代码示例让读者对C#的语法能够有一个初步的认识。具体内容包括以下几个方面: 1.1 基本数据类型 介绍了C#中常见的数据类型,如int,float,double等,并通过代码示例演示了如何使用这些数据类型。 1.2 条件语…

    C# 2023年6月1日
    00
  • Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容

    Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容 在 Linux 系统中,我们可以使用 node.js 来提取 Word(doc/docx) 及 PDF 文本的内容。本攻略将介绍如何使用 node.js 提取 Word(doc/docx) 及 PDF 文本的内容,并提供两个示例说明。 步骤1:安装依赖 在 Linux 系统…

    C# 2023年5月17日
    00
  • c#通过app.manifest使程序以管理员身份运行

    下面是详细讲解“c#通过app.manifest使程序以管理员身份运行”的完整攻略: 1. 为何需要以管理员身份运行程序 在Windows系统中,一些操作需要管理员权限才能够执行,例如修改系统配置、创建和删除文件夹等等。对于这些需要管理员权限的操作,我们需要以管理员身份运行程序才能够正常执行。 2. 如何使用app.manifest来使程序以管理员身份运行 …

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部