LINQ - присоединяйтесь к группе By и получайте среднее - PullRequest
4 голосов
/ 03 августа 2011

SQL:

SELECT DeptId,avg(Marks) FROM StudentTb s
JOIN StudInDepartment d on s.StudentId = d.StudentId
GROUP BY DeptId

Конвертировать в Linq:

  var deptRpts =         from s in this.ObjectContext.StudentTb
                         join d in this.ObjectContext.StudInDepartment on s.StudentId equals d.StudentId  
                         group s by d.DeptId into grp
                         select new {
                             DeptId = grp.Key,
                             AverageMarks = grp.Average(ed=>ed.Marks)
                         };

Получил пустой список результатов.

При расширении набора результатов в режиме отладки. Показывает ошибку Тайм-аут оценки функции

Нужна помощь в этом.

1 Ответ

7 голосов
/ 03 августа 2011

Запрос работает нормально, как есть, по крайней мере, в моем макете, который я только что бросил вместе ... он может иметь какое-то отношение к тому, как структурирована база данных .... в моем макете у меня есть studentID как иностранныйключ к таблице StudInDepartment (ха!), и даже этот упрощенный запрос работает нормально

var deptRpt2 = from d in ctx.StudInDepartment
   group d by d.DeptId into grp
   select new {
      Dept = grp.Key,
      AverageMarks = grp.Average(ed=>ed.StudentTb.Marks)
   };

Сообщение, которое вы получили «истекло время ожидания функции», может быть отладчиком Visual Studio , проблема , можетВам там не помогут, есть и другие потоки из stackoverflow, которые также обсуждают это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...