linq语句使用group by
时间: 2023-07-30 10:10:23 浏览: 110
C#在LINQ中使用GroupBy
LINQ是.NET Framework中用于查询对象的语言集成查询(Language Integrated Query)技术,可以对集合、数组、列表、数据库等数据源进行查询。在LINQ中,可以使用group by子句对查询结果进行分组。
假设我们有一个包含学生信息的列表,每个学生有姓名和年龄两个属性,我们可以使用LINQ的group by子句按照年龄对学生进行分组,示例代码如下:
```
List<Student> students = new List<Student>();
// 添加学生信息
students.Add(new Student { Name = "小明", Age = 18 });
students.Add(new Student { Name = "小红", Age = 19 });
students.Add(new Student { Name = "小张", Age = 18 });
students.Add(new Student { Name = "小李", Age = 19 });
students.Add(new Student { Name = "小刚", Age = 20 });
// 使用LINQ的group by子句按照年龄对学生进行分组
var result = from s in students
group s by s.Age into g
select new { Age = g.Key, Students = g };
// 遍历结果输出
foreach (var group in result)
{
Console.WriteLine("年龄为 {0} 的学生有:", group.Age);
foreach (var student in group.Students)
{
Console.WriteLine(student.Name);
}
}
```
在这个示例中,我们使用了group by子句来按照学生的年龄对学生信息进行分组。在group by子句中,我们首先指定要分组的属性,这里是学生的年龄,然后使用into关键字将分组结果存储到一个新的变量g中。最后,我们使用select关键字创建一个新的匿名类型,包含分组的关键字Age和分组中的学生列表Students。最终,我们遍历结果,输出每个年龄分组中的学生姓名。
需要注意的是,在使用group by子句时,需要注意分组的顺序,因为分组的顺序影响了结果的排序。同时,group by子句还可以与其他LINQ子句一起使用,例如where、select等,从而进行更复杂的查询。
阅读全文