2013-03-14 3 views
0

У меня есть следующие 2 классасоздать список элементов, сгруппированных с помощью ID

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 класса, но мы делаем это для отслеживания.

В базе данных у нас есть таблица, которая содержит StudentsStudentName и schoolId

как мы можем восстановить список Schools, выбрав все из этого таблиц

+0

Можете ли вы разработать более? – Jeremy

+0

Возможно, «Студенту» требуется имущество под названием «Школа« Школа »? 'public School School {get; set;}' – Jeremy

+0

Можете ли вы использовать LINQ? – Heinrich

ответ

2

Это довольно прямо вперед. Просто используйте метод GroupBy в Linq.

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() 
    }; 
+0

Вам необязательно нужно предложение select в первом запросе, вы можете использовать перегрузку с двумя аргументами, которая также выполняет проекцию значения. –

+0

@JeffMercado хорошая точка, спасибо. –

Смежные вопросы