Use WhereIn for experiment course grade aggregation

This commit is contained in:
biss committed 2026-08-17 20:30:03 +08:00
1 parent e70d71cb67
commit ce8982dba9
1 file changed
+2 -3
@@ -252,9 +252,8 @@ public sealed class ExperimentGradesController(
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
var taskIds = results.Select(x => x.TeachingTaskId).Distinct().ToArray(); var taskIds = results.Select(x => x.TeachingTaskId).Distinct().ToArray();
var aggregates = await db.ExperimentCourseGrades.AsNoTracking() var aggregates = await db.ExperimentCourseGrades.AsNoTracking()
.Where(x => .Where(x => x.StudentId == student.Id)
x.StudentId == student.Id && .WhereIn(taskIds, x => x.TeachingTaskId)
taskIds.Contains(x.TeachingTaskId))
.ToDictionaryAsync(x => x.TeachingTaskId, cancellationToken); .ToDictionaryAsync(x => x.TeachingTaskId, cancellationToken);
var courses = results var courses = results
.GroupBy(x => x.TeachingTaskId) .GroupBy(x => x.TeachingTaskId)