Requête SQL Server VB.NET à LINQ

J'essaie de convertir la requête de travail ci-dessous à LINQ VB.NET, cependant, je n'obtiens pas les résultats.

select s.id, s.LastName, COUNT(c.Id) from Students s, Courses c where s.Id = c.Student_Id group by s.Id, s.LastName 

J'ai atteint jusqu'à présent:

 Dim query = (From s In db.Students Join c In db.Courses On s.Id Equals c.Student_Id Group s, c By s.Id, s.LastName, c.Grade Into Group Select New With {.Id = Id, .Name = LastName, .Counter = Group.Count }).ToList 

Les résultats ne sont pas corrects. Pouvez-vous m'aider s'il vous plaît?

Une chose qui est évidente est la clause group by . Sur le SQL, vous avez:

 group by s.Id, s.LastName 

mais sur Linq vous aussi grouper par c.Grade :

 Group s, c By s.Id, s.LastName, c.Grade Into Group 

Un autre problème mineur est COUNT(c.Id) qui ne devrait countr que des valeurs non nulles, mais vous n'avez probablement aucune valeur nulle là-bas, donc il devrait être le même.

Dans de nombreux cas, dans Linq, si vous avez des foreign keys et que le model est configuré correctement, vous ne devez pas utiliser Join . Cela pourrait aussi fonctionner (je ne suis pas sûr que ce soit la bonne syntaxe):

 db.Students.Select(Function(s) New With {.Id = s.Id, .Name = s.LastName, .Counter = s.Courses.Count()}).ToList