📜  使用 LINQ 将序列划分为组的 C# 程序

📅  最后修改于: 2022-05-13 01:54:52.540000             🧑  作者: Mango

使用 LINQ 将序列划分为组的 C# 程序

给定一个序列,现在我们的任务是使用 LINQ 将给定的序列分组。所以对于这个任务,首先我们生成一个序列,然后我们从给定的序列中选择元素,然后将它们组合在一起。

方法:

1.在 C# 中,我们可以通过在程序中包含“System.Linq”命名空间来使用 LINQ。

2.使用 Enumerable.Range(start, end) 方法生成一个序列,

public static System.Collections.Generic.IEnumerable Range (int start, int count);

3.现在,我们可以选择序列中的每个元素,将它们除以 20,然后将它们转换成新的形式后进行分组。

var groups = from a in sequence.Select((p, q) => new { p, groups = q / 20 })
             group a.p by a.groups into b
             select new { Min = b.Min(), Max = b.Max() };

示例:在这个程序中,首先,在第一次迭代中,我们生成了一个从 100 开始到 100 + 100 结束的数字序列。此外,使用 Select 属性,我们将序列的每个元素除以 20。现在,在第二次迭代,我们将这些元素转换为新形式,并使用group属性对它们进行分组。结果被转换为具有属性 Min 和 Max 的匿名对象的可枚举集合。

C#
// C# program to divide a sequence into
// groups using LINQ
using System;
using System.Linq;
using System.IO;
  
class GFG{
  
static public void Main()
{
      
    // Generating a sequence
    var sequence = Enumerable.Range(100, 100).Select(a => a / 20f);
      
    // Dividing the given sequence into groups
    var groups = from a in sequence.Select((p, q) => new { p, groups = q / 20 })
                 group a.p by a.groups into b
                 select new { Min = b.Min(), Max = b.Max() };
      
    // Displaying the results           
    foreach(var grps in groups)
        Console.WriteLine("Min: " + grps.Min + " Max:" + grps.Max);
}
}


输出
Min: 5 Max:5.95
Min: 6 Max:6.95
Min: 7 Max:7.95
Min: 8 Max:8.95
Min: 9 Max:9.95