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日

相关文章

  • 基于C#实现简单离线注册码生成与验证

    前言本篇攻略将介绍如何使用C#语言实现一个简单的离线注册码生成器与验证器,可适用于需要对软件进行授权的情形,如商业软件、企业内部软件等。首先我们将讲解注册码的生成方法,然后是注册码的验证方法,最后我们会给出完整的示例说明,希望这篇攻略对大家有所帮助。 一、注册码生成器的实现注册码生成器主要包括两个功能:生成唯一的机器码和根据机器码生成注册码。下面是代码实现:…

    C# 2023年6月6日
    00
  • iOS省市二级联动的数据组织PHP版

    下面是“iOS省市二级联动的数据组织PHP版”详细攻略,分以下几个部分: 1.前置知识2.数据组织3.PHP实现代码4.示例说明 1.前置知识 在进行iOS省市二级联动之前,我们需要掌握以下前置知识: PHP基础语法:包括变量、数组、循环语句等 数据库基本操作:包括增删改查操作(CRUD操作) JSON数据格式:了解JSON数据结构的基本概念及用法 2.数据…

    C# 2023年6月1日
    00
  • C#开发微信门户及应用(3) 文本消息和图文消息应答

    这里是对C#开发微信门户及应用(3) 文本消息和图文消息应答的完整攻略: 创建回复消息 当您想要回复微信用户的消息时,需要进行以下步骤: 创建一个ReplyMessage实例。 设置ReplyMessage的ToUserName和FromUserName属性,它们分别代表接收消息的用户ID和公众号ID。 如果您要回复的是一条文本消息,请创建一个TextMes…

    C# 2023年6月1日
    00
  • 一步步打造简单的MVC电商网站BooksStore(3)

    一步步打造简单的MVC电商网站BooksStore(3) 在这一部分中,我们将继续完善我们的MVC电商网站开发计划,包括:数据库设计,模型开发和控制器开发。 数据库设计 在我们的电商网站开发中,我们将使用MySQL数据库来存储数据。我们需要设计一些数据表来存储用户信息、产品信息、订单信息等。 具体来说,我们需要至少设计三个表:一个用户信息表,一个产品信息表和…

    C# 2023年5月31日
    00
  • c# 将Datatable数据导出到Excel表格中

    下面是将Datatable数据导出到Excel表格中的完整攻略。 1. 准备工作 在开始操作之前,需要确保已经将NPOI引入到项目中。可以通过NuGet包管理器或手动下载NPOI工具包的方式引入。 2. 代码实现 在代码中需要引入以下命名空间: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using…

    C# 2023年5月31日
    00
  • C#编程实现四舍五入、向上及下取整的方法

    要实现四舍五入、向上及下取整的方法,可以使用C# Math类中的Round、Ceiling和Floor方法。 Round方法实现四舍五入 Round方法可以对一个浮点型数字进行四舍五入,方法的第一个参数是要处理的数字,第二个参数表示保留的小数位数。其中保留的小数位数可以为0,如果为0则Round方法将返回一个整数类型。 示例代码如下: double num1…

    C# 2023年6月6日
    00
  • 部署ASP.NET Core程序到Linux系统

    部署ASP.NET Core程序到Linux系统攻略 ASP.NET Core是一个跨平台的Web应用程序框架,可以在Windows、Linux和macOS等操作系统上运行。本文将介绍如何将ASP.NET Core程序部署到Linux系统上。 准备工作 在开始之前,需要完成以下准备工作: 安装.NET Core SDK。 安装Linux系统。 步骤 步骤1:…

    C# 2023年5月17日
    00
  • C#使用IHttpModule接口修改http输出的方法

    这里介绍一下如何使用IHttpModule接口来修改HTTP输出。 什么是 IHttpModule IHttpModule 是一个定义在 System.Web 命名空间下的接口,通过实现它,我们可以在 ASP.NET 应用程序处理请求和发送响应时注入一些自己的操作。具体来说,IHttpModule 接口中提供了两个方法: Init:在应用程序域中初始化模块时…

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