使用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 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告