[C#]阅读在 C# 代码中使用 LINQ 的集合数据

发布时间: 2017/2/27 4:20:24
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我需要为每个使用 Linq 查询,做了很好的记录实例集合数据和其他数据。

课程模式

public partial class Course
{
    public Course()
    {
        this.StudentCourses = new HashSet<StudentCourse>();
    }

    public int CourseID { get; set; }
    public string Title { get; set; }

    public virtual ICollection<StudentCourse> StudentCourses { get; set; }
}

学生模型

   public partial class Student
{
    public Student()
    {
        this.StudentCourses = new HashSet<StudentCourse>();
    }

    public int StudentID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<StudentCourse> StudentCourses { get; set; }
}

StudentCourse 模型

public partial class StudentCourse
{
    public int StudentCourseID { get; set; }
    public int StudentID { get; set; }
    public int CourseID { get; set; }

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

方法阅读记录

   public void readStudents()
    {
        using (var db2 = new MyDbContext())
        {
            List<Student> _studentRead = new List<Student>();

            _studentRead = (from b in db2.Students
                            orderby b.StudentID
                            select b).ToList() ;

        }
    }

班级模型

 public partial class Student
{
    public Student()
    {
        this.StudentCourses = new HashSet<StudentCourse>();
    }

    public int StudentID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<StudentCourse> StudentCourses { get; set; }
}

第三部分的问题

我得到正确的结果,是现在;我可以看到学生和 coursesID 在向使用下列语句; 登记册列表

  using (var db2 = new MyDbContext())
        {
            List<Student> _studentRead = new List<Student>();

            _studentRead = (from _student in db2.Students.Include(r=>r.StudentCourses)        
                            select _student).ToList();
        }

现在我如何可以包括课程标题对我这 linq 语句到如下图想表明我能读懂 courseIDs

enter image description here

解决方法 1:

如果你试图装入 StudentCourse 集合,当加载一个学生对象就可以使用包含扩展方法。

public void LoadStudents()
{
  using (var db2 = new MyDbContext()
  {
    //Lambda Linq
    var studentList = new List<Student>();
    studentList = db2.Students
                     .Include(s => s.StudentCourses)
                     .OrderBy (s => s.StudentId)
                     .ToList();

    //Comprehension Linq 
    var compList = new List<Student>();
    compList = (from s in db2.Students.Include(r => r.StudentCourses)
               OrderBy s.StudentId
               Select s).ToList();
  }
}

这将显式告诉要加载集合时加载每个 student 对象从上下文的上下文。 扩展方法是在 System.Data.Entity 命名空间

更多的信息可以在这里找到︰ https://msdn.microsoft.com/en-us/data/jj574232.aspx

更新 1-显示加载多个级别的依赖对象

public void LoadStudents()
{
  //Lambda Linq
  var lambdaList = db2.Students
                      .Include(s => s.StudentCourses.Select(sc => sc.Course))
                      .OrderBy(s => s.StudentId)
                      .ToList();

 //Comprehension Linq
 var compList = (from student in db2.Students.Include(s => s.StudentCourse.Select(sc => sc.Course)
                 OrderBy student.StudentId
                 Select student).ToList(); 
}
赞助商