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# 中,线程可以作为一个独立的执行单元来运行,它能够给应用程序带来很多好处。线程的实现原理是在众多操作系统和底层硬件支持下完成的,C# 编程语言自身也提供了一些方法和类来帮助我们创建和操作线程。 其中,线程委托是一种非常常用的方式。它可以将一个方法绑定到一个线程上,当线程被启动时,这个方法就会被调用。本篇攻略将详细…

    C# 2023年6月6日
    00
  • C#与PLC通讯的实现代码

    以下是完整攻略: C#与PLC通讯的实现代码 1. 简介 PLC与C#的通讯主要有以下两种方式: 使用PLC厂商提供的API接口进行通讯 使用第三方组件进行通讯 在这里,我们主要介绍第二种方式,使用第三方组件进行C#与PLC的通讯。 2. 第三方组件 目前市场上比较流行的PLC通讯组件有以下几个: OPC(OLE for Process Control) K…

    C# 2023年5月15日
    00
  • C#语言基础——结构体和枚举类型全面解析

    C#语言基础——结构体和枚举类型全面解析 介绍 在开发过程中,我们经常需要定义一些复杂的数据类型。C#语言中提供了结构体和枚举类型,帮助我们定义自己的复杂数据类型,提高代码可读性和维护性。本文将全面解析结构体和枚举类型的使用方法,在文中我们将让您了解到以下内容: 什么是结构体,结构体有哪些特点 什么是枚举类型,枚举类型有哪些特点 结构体和枚举类型的区别 使用…

    C# 2023年6月7日
    00
  • C#字符串String及字符Char的相关方法

    下面就是关于 C# 字符串 String 及字符 Char 相关方法的详细攻略。 字符串 String 字符串简介 C# 中的字符串是一组字符的集合,用双引号引起来的字符序列,在 C# 中被认为是值类型。字符串可以包含任何字符,包括特殊字符、数字和字母。 C# 字符串是不可改变的,也就是说,一旦创建了一个字符串对象,就不可以改变它。 字符串的方法 C# 的 …

    C# 2023年5月15日
    00
  • des加密解密源码 C# key值问题分析

    以下是关于“des加密解密源码 C# key值问题分析”的完整攻略: 1. DES加密解密简介 DES(Data Encryption Standard),即数据加密标准,是一种对称加密算法。在加密和解密时使用同样的密钥,因此也称为共享密钥加密算法。DES算法由美国国家标准局(National Institute of Standards and Techn…

    C# 2023年6月8日
    00
  • 本人常用的asp代码 原创

    “本人常用的ASP代码原创”攻略 什么是ASP? ASP(Active Server Pages)是微软公司开发的动态网页技术。通过使用ASP,可以在网页中嵌入服务器端脚本代码,并将动态产生的结果发送回客户端浏览器。 如何使用ASP? 要使用ASP,需要一台安装了IIS(Internet Information Services)服务器软件的Windows计…

    C# 2023年5月31日
    00
  • abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之下(六十二)

    Abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)…

    C# 2023年4月27日
    00
  • ASP.NET Core 5.0中的Host.CreateDefaultBuilder执行过程解析

    ASP.NET Core 是一种开源的、跨平台的、高性能的 Web 应用程序框架。其中 Host.CreateDefaultBuilder 是一个 ASP.NET Core 5.0 的新特性,它提供了一个有用的方法来快速地搭建一个 Web 应用程序的主机。本攻略将详细讲解 ASP.NET Core 5.0 中的 Host.CreateDefaultBuild…

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