使用 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