📅  最后修改于: 2023-12-03 15:15:26.666000             🧑  作者: Mango
在使用LINQ时,Group By语句对于对数据进行分组和聚合是非常有用的。在本篇文章中,我们将学习如何在C#中使用Group By语句。
Group By语句用于将数据按照某个键值进行分组。它通常用于查询类似于数据库表的数据集,这些数据通过一个或多个字段进行分组,然后可以执行聚合操作来计算每个组的数据。在使用Group By时,我们可以给它提供一个键值选择器,用于标识如何按组分组。
下面是Group By语句的基本语法:
var groupedData = from item in collection
group item by item.Property into grouped
select grouped;
其中,collection
是要进行分组的数据集合。Property
是一个键值选择器,用于指定按哪个属性进行分组。grouped
是一个新的临时集合,它用于存储分组的结果。
假设我们有一个Person类,它有一个Name属性和一个Age属性。我们的数据集合包含了一些Person对象:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>()
{
new Person { Name = "Tom", Age = 25 },
new Person { Name = "Jerry", Age = 30 },
new Person { Name = "Mike", Age = 25 },
new Person { Name = "Sara", Age = 20 },
new Person { Name = "Zoe", Age = 30 },
};
现在,我们想按照年龄进行分组,并计算每个年龄组的人数。使用Group By语句可以非常容易地实现这个功能:
var groupedData = from person in people
group person by person.Age into grouped
select new { Age = grouped.Key, Count = grouped.Count() };
foreach (var item in groupedData)
{
Console.WriteLine($"Age: {item.Age}, Count: {item.Count}");
}
输出结果如下:
Age: 25, Count: 2
Age: 30, Count: 2
Age: 20, Count: 1
在上面的示例中,我们使用group person by person.Age
将Person对象按照Age属性进行分组,然后使用grouped.Count()
计算每个年龄组的人数。最终,我们使用select
来创建一个新的匿名对象,其中包含了年龄和人数信息。
Group By语句是C#中非常有用的语法,它使得我们可以按照某个键值对数据进行分组,并进行聚合操作。在使用Group By时,需要特别注意键值选择器的使用,以确保正确的分组结果。