LIst<T> 根据其中的一个属性分组
时间: 2023-08-10 22:05:19 浏览: 132
可以使用 LINQ 中的 `GroupBy` 方法来实现 List<T> 根据其中的一个属性分组。例如,假设有一个 Person 类,其中包含属性 Name 和 Age,我们想要将 List<Person> 按照 Age 属性进行分组,代码示例如下:
```csharp
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 groupedPersons = persons.GroupBy(p => p.Age);
foreach (var group in groupedPersons)
{
Console.WriteLine($"Age {group.Key}:");
foreach (var person in group)
{
Console.WriteLine($"\t{person.Name}");
}
}
```
输出结果:
```
Age 20:
Alice
Charlie
Age 30:
Bob
David
```
在上面的代码中,我们使用了 `GroupBy` 方法来按照 Person 对象的 Age 属性进行分组。这个方法返回一个 `IEnumerable<IGrouping<TKey, TElement>>`,其中 TKey 是用于分组的属性的类型,TElement 是源集合中的元素类型。在本例中,TKey 是 int 类型,TElement 是 Person 类型。我们遍历每个分组并打印出该组的键值和属于该组的所有 Person 对象的名称。
阅读全文