簡體   English   中英

c# Linq找孩子

[英]c# Linq to find children

我在下面有一個 class,我想查看學生是否已經注冊了某個課程。

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

如果我在注冊 object 中有 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(c => c.CourseId == cId && c.RegisterState == RegisterState.Registered)

RegisterState是一個枚舉,其中包含您在注冊時更新的兩個狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM