linq 分组排序
时间: 2023-07-01 08:07:15 浏览: 96
在 LINQ 中,可以使用 `GroupBy` 方法对序列进行分组,然后使用 `OrderBy` 或 `OrderByDescending` 方法对分组后的结果进行排序。
下面是一个示例代码:
```csharp
var data = new[] {
new { Name = "Alice", Age = 25 },
new { Name = "Bob", Age = 30 },
new { Name = "Charlie", Age = 25 },
new { Name = "Dave", Age = 20 },
};
var groups = data
.GroupBy(x => x.Age) // 按年龄分组
.OrderBy(g => g.Key); // 按年龄升序排序
foreach (var group in groups)
{
Console.WriteLine($"Age: {group.Key}");
foreach (var item in group.OrderBy(x => x.Name)) // 在每个分组中按姓名升序排序
{
Console.WriteLine($"Name: {item.Name}");
}
Console.WriteLine();
}
```
输出结果:
```
Age: 20
Name: Dave
Age: 25
Name: Alice
Name: Charlie
Age: 30
Name: Bob
```
在上面的代码中,首先使用 `GroupBy` 方法按照年龄对数据进行分组,然后使用 `OrderBy` 方法按照年龄升序排序。在输出每个分组时,使用 `OrderBy` 方法按照姓名升序排序。
阅读全文