使用LINQ查詢物件列表中的整數並排序的C#程式


簡介

在這篇文章中,我們將學習如何編寫一個C#程式,從物件列表中查詢整數,並使用LINQ對其進行排序。讓我們簡要概述一下該語言。C#程式語言經常用於開發桌面、Web和移動應用程式。語言整合查詢(LINQ)是C#的強大功能之一。開發人員可以使用它快速查詢來自各種來源的資料,包括陣列、集合和資料庫。它為開發人員提供了一種類似於SQL(結構化查詢語言)的語法,並可以輕鬆進行資料操作和排序。無論資料來源是什麼,它都提供了一種標準的語法來查詢資料。由於LINQ的語法與SQL類似,因此開發人員可以輕鬆學習和使用它。

問題陳述

在本文中,我們將演示如何使用C#中的LINQ從物件列表中查詢整數並對其進行排序。必須從物件列表中提取整數和雙精度浮點數,然後對其進行排序。因此,可以使用OfType()方法進行此操作,並使用OrderBy()函式對整數進行排序。讓我們分別瞭解一下它們以及它們的語法:

OfType() 方法

它用於根據指定型別篩選IEnumerable的元素。如果提供的源為null,此方法將引發ArgumentNullException異常。

語法

public static System.Collections.Generic.IEnumerable<TResult> OfType<TResult>(this System.Collections.IEnumerable source); 

OrderBy() 方法

此方法用於按升序對集合中的元素進行排序。如果提供的源為null,此方法也將引發ArgumentNullException異常。

語法

public static System.Linq.IOrderedEnumerable
OrderBy<TSource,TKey(thisSystem.Collections.Generic.IEnumerable<TSource> list, Func<TSource,TKey> Selector); 

讓我們用一個例子來理解這個問題。

示例

建立一個列表並向其中新增元素。在這個例子中,我們使用不同資料型別的物件。

輸入

["Tutpoints", 100, "LINQ", 18, “50”, 20, ‘A’, 34] 

在不同的物件中,OfType()和OrderBy()方法將對列表中的整數值進行排序和排列。因此,給定輸入的輸出為:

輸出

[18, 20, 34,100]

演算法

步驟1  建立物件列表

讓我們首先建立一個物件列表,其中包含字串、整數和字元的組合。

List<object> list = new List<object> { "Tutpoints", 100, "LINQ", 18, “50”, 20, ‘A’, 34}; 

步驟2  使用OfType()方法查詢整數

然後將使用OfType()方法過濾列表,以便只有整數值保留。

var integers = list.OfType<int>(); 

LINQ提供的擴充套件方法稱為OfType()。它返回該型別過濾後的條目列表。在本例中,列表被過濾為僅包含int型別的元素。現在,integers變數中只有來自第一個列表的整數值。

步驟3  使用OrderBy()排序整數

我們可以使用OrderBy()方法將整數序列按升序排序。

var sortedIntegers = integers.OrderBy(x => x); 

LINQ提供的另一個擴充套件方法是OrderBy()方法。它根據給定的鍵按升序對元素列表進行排序。在本例中,排序序列的鍵使用lambda表示式(x => x)指定。序列元素(x)傳遞給lambda表示式,然後返回將作為排序鍵的值。

現在,sortedIntegers變數中包含來自初始列表的整數值,並按升序排列。

步驟4  列印排序後的整數。

最後,我們可以使用foreach迴圈和Console.WriteLine()方法列印排序後的整數值。

我們剛剛閱讀了一個簡單的演算法。現在讓我們看一下完整的C#程式,它演示瞭如何使用LINQ從物件列表中查詢整數並對其進行排序。

示例

using System;
using System.Collections.Generic;
using System.Linq;
class Program {
   static void Main(string[] args) {
      List<object> list = new List<object> { "Tutpoints", 100, "LINQ", 18, "50", 20, 'A', 34 };
      var integers = list.OfType<int>();
      var sortedIntegers = integers.OrderBy(x => x);
      Console.WriteLine("Sorted integer values are:");
      foreach (int integer in sortedIntegers) {
         Console.WriteLine(integer);
      }
   }
} 

輸出

Sorted integer values are:
18
20
34
100

結論

在這篇文章中,我們向您展示瞭如何使用C#中的LINQ從物件列表中查詢整數並對其進行排序。在使用OfType()方法刪除列表中除整數值外的所有值後,我們使用OrderBy()方法對整數進行了排序。最後,我們使用列印命令將排序後的整數值顯示到控制檯中。我們已經瞭解了演算法,也看到了程式碼。我們希望這篇文章能幫助您增強對該主題的知識和理解。

更新於:2023年4月21日

342 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.