使用 LINQ 的 List 集合 where() 方法编写 C# 程序,查找姓名以"S"开头的学生列表

csharpserver side programmingprogramming更新于 2025/9/24 5:14:00

简介

本文要学习的主题是编写一个 C# 程序,使用 LINQ 的 List 集合 where() 方法查找姓名以"S"开头的学生列表。

语言集成查询(又名 LINQ)用于在 C# 语言中生成查询。以前,我们必须使用其他关系语言,如 SQL 和 XML。它为 C# 语言或任何其他 .NET 语言提供了更多功能。在 LINQ 中查询数据库的语法与查询存储在数组中的数据的语法相同。

在我们继续进行并了解使用 LINQ 的 List 集合 where() 方法查找姓名以"S"开头的学生列表的 C# 程序的算法和代码之前,让我们复习一下 LINQ 的速记。

语言集成查询 (LINQ)

.NET 框架的一部分 LINQ 使用户能够更轻松地以类型安全的方式检索数据。这是在 .NET 3.5 版本中引入的。

LINQ 的最佳特性是它提供了一种从许多来源(包括数据库和 XML 文档)访问数据的单一方法。借助 LINQ,用户可以编写更易于理解、更简洁、更美观的代码。它还提供其他功能,如过滤、排序、分组数据甚至更改数据。

现在,是时候介绍一下 where() 方法或也称为 Enumerable.Where() 方法,它属于命名空间 System.Linq。

Where<TSource>(IEnumerable<TSources>,Func<T Source,Boolean>)

此方法属于命名空间 System.Linq。它根据谓词过滤一系列值。让我们看看它的定义语法 -

public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);

此方法具有类型参数 TSource,它说明源元素的类型。另外两个参数是源(即要过滤的 IEnumerable<T>)和谓词(即测试每个元素是否符合条件的函数)。

此方法返回输入序列中符合条件的项目集合,表示为 IEnumerable<T>。当谓词或源为空时,可能会抛出 ArgumentNullException。

我们将采用问题陈述,这将使我们非常容易理解 where() 方法的概念。

在一所学校里,有一个国际象棋队,由来自不同班级的 5 名成员组成。Ankit、Abhinay、Shubham、Shreyank、Shahnawaz。他们在不同的班级学习。将提供带有首字母"S"的西装外套。因此,要知道名字以"S"开头的学生的名字。校长要求您编写一个程序来选择以"S"开头的学生姓名。

现在,在下一节中,我们将讨论使用 LINQ 的 List 集合的 where() 方法编写 C# 程序以查找姓名以"S"开头的学生列表的算法。

算法

以下是使用 where() 方法编写程序代码时需要遵循的步骤。

步骤 1 - 记得声明使用 where() 方法的正确命名空间,即 System.Linq。

步骤 2 − 启动课程代码并声明三个变量来存储学生的学号、班级和姓名。

步骤 3 − 下一步,我们创建字符串方法,该方法返回学生的学号、姓名和标准。

步骤 4 − 在 main() 部分中,我们声明列表变量,然后将数据添加到列表中。

步骤 5 − 现在我们使用 where() 方法根据用户提供的谓词过滤所需的信息。

步骤 6 − 在此步骤中,我们显示获取的详细信息。并结束程序。

示例

让我们通过一个例子来讨论这个问题。

using System.Linq;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
class Student{

    // 三个变量用于存储学生的学号、班级和姓名
    int roll;
    int std;
    string name;
    // 创建返回学生学号、姓名和标准的字符串方法
    public override string ToString(){
    return roll + " " + name + " " + std;
    }
    static void Main(string[] args){

      // 声明列表变量
      List<Student> student = new List<Student>(){

         // Details of students of the chess team
         new Student{ roll = 21, name = "Ankit", std = 10 },
         new Student{ roll = 12, name = "Abhinay", std = 10 },
         new Student{ roll = 07, name = "Shubham", std = 11 },
         new Student{ roll = 14, name = "Shreyank", std = 12 },
         new Student{ roll = 10, name = "Shanawaz", std = 11 }

      };
      
    // 使用 Where() 函数搜索学生详细信息
    IEnumerable<Student> Query = student.Where(s => s.name[0] == 'S');
    
    // 显示学生详细信息
    Console.WriteLine("Roll Name Standard");
    Console.WriteLine("- - - - - - - - - - - - - - - - - - - ");
    foreach (Student e in Query) {

         // 调用转字符串方法
         Console.WriteLine(e.ToString());
      }
   }
} 

输出

Roll Name Standard
- - - - - - - - - - - - - - - - -
07 Shubham 11
14 Shreyank 12
10 Shanawaz 11 

时间复杂度

where() 方法的时间复杂度是常数,在 Big-O 表示法中可以称为 O(1)。因此整个代码的时间复杂度为 O(1)。

结论

在本文中,我们讨论了一个 C# 程序,该程序使用 LINQ 的 List 集合的 where() 方法查找名字以"S"开头的学生列表。我们理解了 where() 方法。然后我们理解了算法,最后我们学习了代码。然后我们理解了代码的时间复杂度。

我们希望本文有助于增强您对 C# 的了解。


相关文章