【问题标题】:How can I get a list of students from this database schema?如何从此数据库模式中获取学生列表?
【发布时间】:2021-11-12 02:57:48
【问题描述】:

我有以下数据库:

Student
StudentID
Name
LastName
Grade
GradeId
Name
GradeInstance
GradeInstanceId
GradeId
Name
Year
StudentInstance
StudentInstanceId
GradeInstanceId
StudentInstanceId

如何从给定的成绩实例中检索学生列表?

我使用实体框架作为我的 ORM,那么 LINQ 查询会是什么样子?

编辑:我需要返回 Student 对象,而不是 StudentInstance 对象,因为它们不包含填充 GUI 所需的属性。

所以这样的东西对我不起作用,除非我在这里遗漏了一些东西。

dbContext.StudentInstances.Where(s => s.GradeInstanceId == 1);

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:
    from s in dbContext.Student
    join si in dbContext.StudentInst on s.StudentID equals si.StudentInstanceID
    join g in dbContext.Grade on si.GradeInstanceID equals g.GradeID
    where g.Name = ...
    select s;
    

    【讨论】:

      【解决方案2】:

      这应该可以帮助您入门....

          public static List<Student> GetStudents(int gradeId)
          {
              using (var context = new Entities())
              {
                  List<Student> myList = (from s in dbContext.Student 
      join si in dbContext.StudentInst on s.StudentID equals si.StudentInstanceID
      join g in dbContext.Grade on si.GradeInstanceID equals g.GradeID
      where g.GradeId = gradeId
      select s).ToList();
      
               return myList;
              }
          }
      

      使用稍加修改的query:D

      【讨论】:

      • 不完全是,这会返回所有学生。我只需要 StudentInstance 表中 X 编号为 GradeInstanceId 的学生
      【解决方案3】:

      您可以将导航属性添加到您的 GradeInstance 实体到与其相关的学生实体集合中(实际上您可以从添加关联向导中执行此操作),然后您可以简单地使用:gradeInstance.Students

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        • 2016-03-27
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多