创建按ID分组的项目列表

时间:2013-03-14 00:59:58

标签: c# .net-3.5

我有以下两个班级

public class Student
{
    public string Name { get; set; }
    public int SchoolId { get; set; }     
}

public class School
{
    public int SchoolId { get; set; }          
    public IList<Student> Students { get; set; }
}

SchoolId类中添加Student可能很奇怪,但我们这样做是为了跟踪。

在数据库中,我们的表格Students包含StudentNameschoolId

如何通过从此表中选择所有内容来重建Schools列表

1 个答案:

答案 0 :(得分:2)

这很直截了当。只需在Linq中使用GroupBy方法。

var results = db.Students
    .GroupBy(s => s.SchoolId,
             (id, g) => new School() { SchoolId = id, Students = g.ToList() });

或者如果您更喜欢查询语法,请使用:

var results = 
    from s in db.Students
    group s by s.StudentId into g
    select new School()
    {
        SchoolId = g.Key,
        Students = g.ToList()
    };