使用 LINQ 的 List 集合 where() 方法编写 C# 程序,查找姓名以"S"开头的学生列表
简介
本文要学习的主题是编写一个 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# 的了解。

