c#林克去找孩子

c#林克去找孩子,c#,C#,我在下面有一节课,我想检查一下学生是否参加了某一课程 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 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; }
}
如果我在注册对象中有courseId,谁能告诉我一种检查学生是否尚未注册课程的好方法。

来自单个学生:

  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));

   
来自一名学生:

  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));

   

您可以这样做:

  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
是一个具有两种状态的枚举,您可以在注册时进行更新。

您可以执行以下操作:

  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
是一个具有两种状态的枚举,您可以在注册时对其进行更新。

您可以在注册对象中添加一个属性,如
enum
指示学生是否注册,或者您可以通过在查询中使用
然后Include
进一步执行
Include
,然后获取
课程
上课并检查
课程
中的属性。我希望我正确理解了您的问题。您可以在注册对象中添加一个属性,如
枚举
指示,如果
学生
已注册或未注册,或者您可以通过在查询中使用
然后包含
进一步执行
包含
,获取
课程
类,并在
课程
。我希望我正确理解了你的问题。