C# 程式使用使用 LINQ 的列表收集的 where() 方法來尋找姓名以「S」開頭的學生列表

WBOY
發布: 2023-09-11 21:29:02
轉載
1422 人瀏覽過

C# 程序使用使用 LINQ 的列表收集的 where() 方法查找姓名以“S”开头的学生列表

簡介

本文要學習的主題是使用List集合的where()方法和LINQ寫一個C#程序,以尋找名字以'S'開頭的學生名單。

語言整合查詢又稱為 LINQ 用於產生 C# 語言查詢。以前我們必須使用其他關係語言​​,例如 SQL 和 XML。它為 C# 語言或任何其他 .NET 語言提供了更多功能。在 LINQ 中查詢資料庫的語法與查詢數組中儲存的資料的語法相同。

在我們繼續並理解C#程式的演算法和程式碼之前,使用LINQ的List Collection的where()方法找到名字以'S'開頭的學生列表。讓我們簡要複習一下LINQ的簡寫形式。

語言整合查詢 (LINQ)

一個叫做LINQ的.NET框架的一部分使用戶以型別安全的方式更容易檢索資料。這是在.NET 3.5版本中引入的。

LINQ最好的特點是它提供了一種從許多來源(包括資料庫和XML文件)獲取資料的單一方法。借助LINQ,使用者可以編寫更易於理解、更簡潔、更美觀的程式碼。它還提供其他功能,如過濾、排序、分組資料甚至修改資料。

現在,是時候對where()方法進行一些解釋了,它也被稱為Enumerable.Where()方法,屬於命名空間System.Linq。

Where(IEnumerable,Func)

的中文翻譯為:

Where(IEnumerable,Func(IEnumerable,Fir<

這個方法屬於命名空間 System.Linq。它根據謂詞對值序列進行過濾。讓我們來看看它的定義語法 -

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

這個方法有一個型別參數TSource,它告訴我們來源的元素的型別。另外還有兩個參數,來源是一個IEnumerable用來過濾,謂詞是用來測試每個元素是否符合條件的函數。

這是一個傳回滿足條件的輸入序列中的項目集合的回傳方法,表示為一個IEnumerable。當謂詞或來源為空時,可能會拋出ArgumentNullException例外。

我們將採取一個問題陳述,這將使我們很容易理解 where() 的概念方法。

在一所學校裡,有一個由來自不同班級的5名成員組成的西洋棋隊。他們分別是Ankit、Abhinay、Shubham、Shreyank和Shahnawaz。他們在不同的班級學習。需要提供一個帶有首字母為'S'的西裝外套。因此,為了知道以'S'開頭的學生的姓名,校長委託你編寫一個選擇以'S'開頭的學生姓名的程式。

現在,在下一節中,我們將討論使用 LINQ 列表集合的 where() 方法編寫 C# 程式來尋找姓名以 'S' 開頭的學生列表的演算法。

演算法

以下是使用where()方法編寫程式碼時需要遵循的步驟。

步驟 1 - 記得宣告使用 where() 方法的正確命名空間,即 System.Linq。

第 2 步 啟動班級程式碼並宣告三個變數來儲存學生的捲號、班級和姓名。

第 3 步 在下一步中,我們建立字串方法,該方法傳回學生的捲號、姓名和標準。

第 4 步 在 main() 部分中,我們宣告列表變量,然後將資料加入到列表中。

第五步驟  現在我們使用where()方法根據使用者提供的謂詞來過濾所需的資訊。

第6步  在這一步驟中,我們顯示所獲得的詳細資訊。然後結束程式。

範例

讓我們透過一個例子來討論這個問題。

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

   // Three variables to store roll number, class, and name of the student
   int roll;
   int std;
   string name;
   // Creating the string method which returns roll number, name, and standard of student
   public override string ToString(){
      return roll + " " + name + " " + std;
   }
   static void Main(string[] args){

      // Declaring a list variable
      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 }

      };
      
      // Using the Where() function we search through the student details
      IEnumerable<Student> Query = student.Where(s => s.name[0] == 'S');

      // Displaying the student details
      Console.WriteLine("Roll Name Standard");
      Console.WriteLine("- - - - - - - - - - - - - - - - - ");
      foreach (Student e in Query) {

         // Call the to string method
         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 的列表集合的 where() 方法查找姓名以“S”開頭的學生列表。我們理解了 where() 方法。然後我們了解了演算法,最後我們學習了程式碼。然後我們就了解了程式碼的時間複雜度。

我們希望本文對增強您對 C# 的了解有所幫助。

以上是C# 程式使用使用 LINQ 的列表收集的 where() 方法來尋找姓名以「S」開頭的學生列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板