c# Linq для поиска детей - PullRequest
0 голосов
/ 12 июля 2020

У меня есть класс ниже, и я хочу проверить, записался ли студент на определенный курс.

public class Student
{ 
    [Required]
    [Key]
    public int Id { get; set; }
    
    [MaxLength(100)]
    public string FirstName { get; set; }
    public virtual ICollection<Enrollment> Enrollments { get; set; }

}

public class Enrollment
{
    [Required]
    public int EnrollmentId { get; set; }
    
    [Required]
    public int CourseId { get; set; }

    [Required]
    public int StudentId { get; set; }

    public virtual Course Course { get; set; }
    public virtual Student Student { get; set; }
}

На данный момент у меня есть этот запрос из моей базы данных.

          var student=  await _context
         .Student
         .Include(c => c.Enrollments)
         .FirstOrDefaultAsync(s => s.Id == StudentId);

Может ли кто-нибудь подсказать мне хороший способ проверить, что студент еще не зарегистрировался на курс, если у меня есть courseId в объекте enrollments.

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

от одного студента:

  var student=  await _context
     .Student
     .Include(c => c.Enrollments)
     .FirstOrDefaultAsync(s => s.Id == StudentId);
  return student.Enrollments.Any(x => x.CourdeId == aCourseId); //returns true if such an erloment exists

Опрос студентов, не зарегистрированных на курс

  var students =  await _context
     .Student
     .Include(c => c.Enrollments)
     .Where(s => !s.Enrolments.Any(x => x.CourseId == aCourseId));

   
0 голосов
/ 12 июля 2020

Вы можете сделать что-то вроде этого:

  var student=  await _context
     .Student
     .Include(c => c.Enrollments)
     .FirstOrDefaultAsync(s => s.Id == StudentId);

return student.Enrollments.Any(c => c.CourseId == cId && c.RegisterState == RegisterState.Registered)

RegisterState - это перечисление с двумя состояниями, которые вы обновляете при регистрации.

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