使用LINQ的List集合where()方法查詢姓名以“S”開頭的學生列表的C#程式
介紹
本文將學習如何編寫一個C#程式,使用LINQ的List集合where()方法查詢姓名以'S'開頭的學生列表。
語言整合查詢,即LINQ,用於在C#語言中生成查詢。以前我們必須使用其他關係語言,如SQL和XML。它為C#語言或任何其他.NET語言提供了更強大的功能。在LINQ中用於查詢資料庫的語法與查詢儲存在陣列中的資料相同。
在我們繼續學習C#程式的演算法和程式碼之前,該程式使用LINQ的where()方法和List集合查詢姓名以'S'開頭的學生列表,讓我們先回顧一下LINQ的簡寫。
語言整合查詢 (LINQ)
LINQ是.NET框架的一部分,它使使用者能夠以型別安全的方式更輕鬆地檢索資料。這是在.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>。當謂詞或源為null時,可能會丟擲ArgumentNullException異常。
我們將使用一個問題陳述,這將使理解where()方法的概念變得非常容易。
在一所學校裡,有一個國際象棋隊,由來自不同班級的5名成員組成:Ankit、Abhinay、Shubham、Shreyank、Shahnawaz。他們學習不同的課程。將提供帶有'S'首字母的運動夾克。為了知道姓名以'S'開頭的學生姓名,校長要求你編寫一個程式來選擇姓名以'S'開頭的學生姓名。
在下一節中,我們將討論編寫C#程式的演算法,該程式使用LINQ的where()方法和List集合查詢姓名以'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{ // 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()方法的時間複雜度是常數,在大O表示法中可以稱為O(1)。因此,整個程式碼的時間複雜度為O(1)。
結論
在本文中,我們討論了使用LINQ的List集合where()方法查詢姓名以'S'開頭的學生列表的C#程式。我們理解了where()方法。然後我們理解了演算法,最後我們學習了程式碼。然後我們瞭解了程式碼的時間複雜度。
我們希望本文能幫助你提高對C#的瞭解。