Ich habe eine SQL-Abfrage (unten), die im Wesentlichen einen Schüler von tbStudents nimmt, und dann den letzten Begriff (eine Zahl, aber als String gespeichert) in tbTerms.SQL -> LINQ (C#)
Es gibt eine Eins-zu-viele-Beziehung mit einem Studenten in tbStudents zu einem Termbank in tbTerms. Beispiel:
tbStudents:
StudentId FirstName LastName
12345 John Smith
12346 Jane Doe
tbTerms:
StudentId Term
12345 1234
12345 1235
12345 1236
12346 1233
12346 1234
Gewünschter:
StudentId FirstName LastName Term
12345 John Smith 1236
12346 Jane Doe 1234
SQL-Abfrage:
select tbStudents.student_id, tbStudents.user_id, tbStudents.firstname, tbStudents.lastname, v.rTerm
from tbStudents
inner join (
select tbTerms.student_id, MAX(tbTerms.term) as rTerm
from tbTerms
group by tbTerms.student_id
) v on v.student_id = tbStudents.student_id
Ich habe versucht, dies alles in eine LINQ-Anweisung zu bringen, aber ich habe Probleme. Gibt es das überhaupt in einer Aussage? Oder muss es in mehreren Aussagen gemacht werden. Danke im Voraus.
Bearbeiten: C# -Code von dem, was ich versucht habe.
var students = (from s in dockDb.tbStudents
join t in dockDb.tbTerms on s.student_id equals t.student_id
into pairs
from p in pairs
select new { UserId = s.user_id, StudentId = s.student_id, Term = p.term }).ToList();
Ausgang ist ähnlich:
StudentId FirstName LastName Term
12345 John Smith 1234
12345 John Smith 1235
12345 John Smith 1236
12346 Jane Doe 1233
12346 Jane Doe 1234
Edit # 2: Ich bin für die Daten Entity Framework. Ich bin mir nicht sicher, ob das irgendwas betrifft, aber die meisten Lösungen sind 'syntaktisch falsch', wenn ich sie versuche.
Können Sie zeigen, was Sie bereits haben? –
"syntaktisch falsch". Rufen Sie die Erweiterung AsEnumerable() auf. Dann werden sie nicht "syntaktisch inkorrekt" sein. – OmegaMan