C#的LINQ里的GROUP BY 如何使用
时间: 2024-03-08 18:45:44 浏览: 104
C#在LINQ中使用GroupBy
5星 · 资源好评率100%
C#的LINQ(Language Integrated Query)的GROUP BY操作符用于将序列中的元素按照指定的键分组。它的基本语法如下:
```
var groupQuery = from element in sourceSequence
group element by keySelector(element) into groupedElements
select groupedElements;
```
其中,sourceSequence是要分组的元素序列,keySelector是指定键的选择器函数,groupedElements则是分组后的结果。具体来说,keySelector函数会根据元素来选择一个键,然后按照这个键来分组元素。分组后,每个分组会被封装成一个IGrouping<TKey, TElement>对象,其中TKey是键的类型,TElement是元素的类型。
举个例子,假设我们有一个Person类:
```
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
我们可以创建一个Person序列,然后按照年龄来分组:
```
List<Person> persons = new List<Person>
{
new Person { Name = "Alice", Age = 20 },
new Person { Name = "Bob", Age = 30 },
new Person { Name = "Charlie", Age = 20 },
new Person { Name = "David", Age = 30 },
};
var groups = from person in persons
group person by person.Age into ageGroup
select ageGroup;
```
这个查询会返回一个序列,其中每个元素都是一个分组。我们可以遍历这个序列,然后遍历每个分组,来输出分组的结果:
```
foreach (var ageGroup in groups)
{
Console.WriteLine("Age {0}:", ageGroup.Key);
foreach (var person in ageGroup)
{
Console.WriteLine("- {0}", person.Name);
}
}
```
输出的结果会是:
```
Age 20:
- Alice
- Charlie
Age 30:
- Bob
- David
```
这就是按照年龄分组的结果。
阅读全文