quelqu'un peut m'aider sur un problème dans la requête LINQ to SQL Visual Basic.Comptez entre la plage de la liaison de date dans gridview. LINQ to SQL Visual Basic
Ma base de données a trois tables,
* Students(StudentID, StudentName),
* Class(ClassID, ClassDate),
* Attendance(StudentID, ClassID) which Attendance tables is the junction table between Students and Class.
Par exemple:
étudiants
StudentsID ............. StudentName
1001. ..................... Smith
1002 ...................... John
1003 ...................... Bob
classe
ClassID ............ ClassDate
1 ...................... 1/1/2009
2 ............ .......... 1/3/2009
3 ..................... 1/7/2009
Présence
StudentID ............ CLASSID
1001 ................... 1
1002 .. ................. 1
1003 ................... 1
1001 .. ................. 2
1003 ................... 2
1001 ................... 3
1002 ................... 3
1003 ................... 3
J'ai essayé la requête Visual Basic LINQ to SQL ci-dessous pour lister tous les étudiants et le nombre de fréquentation dans un plage de date.
1 Dim db = New AttendanceControllerDataContext
2
3 Dim result = From std In db.Students _
4 Select std.StudentID, _
5 std.StudentName, _
6 Attendance = std.Attendances.Count()
7
8 GridView1.DataSource = result
9 GridView1.DataBind()
Lorsque je tente cela, il me donne:
StudentID ........ StudentName ..... présence
1001 ......... ...... Smith ..................... 3
1002 ............... John ...................... 2
1003 ............... Bob ...... .................3
En ligne 6, Présence Je souhaite compter en fonction de la plage de dates dans la Table des classes, Par exemple si j'ai sélectionné une plage de dates entre 1/2/2009 et 1/7/2009, alors j'ai essayé le code suivant:
1 Dim db = AttendanceControllerDataContext
2 Dim result = From std In db.Students, atd In db.Attendances _
3 Where atd.studentID = std.studentID _
4 Select std.studentID, _
5 std.studentName, _
6 Attendance = atd.Class.date >= 1/2/2009 _
7 And atd.Class.date <= 1/7/2009 std.Attendances.Count()
8 GridView1.DataSource = result
9 GridView1.DataBind()
le résultat est:
StudentID ........ StudentName ..... présence
1001 ......... ...... Smith ..................... 2
1001 ............... Smith ..................... 2
1002 ..... .......... John ...................... 1
1003 ........... .... Bob ....................... 2
1003 ............... Bob ....................... 2
Cependant, je voulais juste une liste qui ressemblent ci-dessous seulement:
StudentID .... .... StudentName ..... Présence
1001 ............... Smith ..................... 2
1002 .... ........... John ...................... 1
1003 .......... ..... Bob ....................... 2
Comment est-ce que je peux faire ceci? Toute suggestion? Merci d'avance ..
MERCI BEAUCOUP! Mon problème est résolu maintenant. C'est une technique vraiment utile. MERCI !!!! – Vicheanak