使用LINQ並行生成奇數的C#程式


介紹

本文將教你如何建立一個使用LINQ並行生成奇數的C#程式。讓我們快速瞭解一下這種語言。C#程式語言通常用於建立桌面、Web和移動應用程式。C#的優勢之一是語言整合查詢(LINQ)。開發人員可以使用它快速訪問各種來源的資料,包括陣列、集合和資料庫。它為資料查詢提供了一種通用的語法,而不管資料來源是什麼。由於LINQ和SQL的語法相似,開發人員可以快速理解和使用它們。

問題說明

為了進一步理解LINQ,讓我們編寫一個程式來並行生成奇數。作為任何程式的第一步,必須確定問題描述和需求,而在這個問題中,它提供了一系列使用ParallelQuery {TSource} 並行生成奇數的LINQ物件查詢技術。此外,為了獲得奇數,我們必須使用where和select子句。

我們將使用兩種LINQ方法來完成此任務,如下所示:

  • Select()

  • Where()

現在讓我們簡要討論這兩種方法。

Select()

當執行查詢時,查詢表示式中的select子句指定將生成的 資料型別。評估之前的每個子句和select子句中找到的任何表示式以確定結果。查詢語句必須以select子句結尾。

Where()

在查詢表示式中使用where子句從資料來源中選擇將返回的元素。它將布林條件(謂詞)應用於每個源元素(由範圍變數引用),然後返回條件為真的任何源元素。單個查詢表示式可以有多個where子句,就像它可以包含多個謂詞子表示式一樣。

使用Where和Select的語法

IEnumerable<int> variable = ((ParallelQuery<int>)ParallelEnumerable.Range(start, stop)).Where(x => x % 2 != 0).Select(i => i); 

假設我們必須在某個特定範圍內並行生成奇數。因此,我們將必須提到範圍,即(10, 21),並且必須找到它們之間的所有奇數。

輸入

Range(start, stop)= Range(10, 21) 

我們目前擁有一組定義了範圍的數字,我們必須在此特定範圍內生成所有奇數。因此,我們的輸出將類似於:

輸出

13
17
19
11
15

讓我們在下一節中檢視演算法。

演算法

以下是使用C#程式中的LINQ並行生成奇數的步驟。

步驟1 − 首先,我們將包含範圍,即(10, 21)。

步驟2 − 現在,我們將編寫10到21範圍內並行查詢的程式碼。

步驟3 − 使用變數x來檢查奇數條件。

步驟4 − 使用Where子句來驗證x除以二的餘數是否不等於零。

步驟5 − 現在取另一個變數y。

步驟6 − 使用Select子句來確定變數y的值是否大於或等於變數x的值。

步驟7 − 使用foreach迴圈迭代奇數。

步驟8 − 顯示所有奇數。

演算法的步驟非常簡單;現在讓我們看看程式碼。

示例

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

// C# program to generate odd numbers in parallel using LINQ
using System;
using System.Linq;
using System.Collections.Generic; 
class TutorialPoint{
   static void Main(string[] args){
      // Execute a parallel query within range 10 to 11.
      IEnumerable<int> odd = ((ParallelQuery<int>)ParallelEnumerable.Range(10, 11))
   
      // Check the condition for odd numbers using the Where clause.
      .Where(x => x % 2 != 0)
   
      //Use the Select clause to select those odd numbers.
      .Select(y => y);
      
      // Display the odd numbers
      foreach (int n in odd){
         Console.WriteLine(n);
      }
      Console.ReadLine();
   }
}

輸出

17
19
11
13
15

時間複雜度

使用LINQ並行生成奇數的C#程式的時間複雜度取決於輸入範圍的大小。

假設程式使用LINQ查詢生成奇數,則查詢的時間複雜度將為O(n),其中n是要生成的奇數的數量。這是因為查詢需要迭代數字序列以確定哪些是奇數。但是,當程式並行執行查詢時,時間複雜度將取決於系統中可用的處理器或核心數量,以及並行化實現的效率。如果程式使用良好的並行化演算法,它可以將生成奇數的任務劃分為較小的子任務,並將它們分配到多個處理器或核心上。這可以減少程式的整體執行時間。

因此,如果我們討論使用LINQ並行生成奇數的C#程式的時間複雜度,則LINQ查詢的時間複雜度為O(n)。因為我們只遍歷迴圈一次,並且遍歷次數取決於輸入的數字,所以時間複雜度為O(n)。

結論

在本文中,我們廣泛討論了使用C#程式並行生成奇數的方法。我們確保沒有直接跳到程式碼,而是討論了語法,特別是where子句。我們還討論了演算法。我們深入討論了程式碼。我們生成了程式碼的相關輸出。我們希望本文能幫助你提高C#知識。

更新於:2023年3月31日

382 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.