2014-12-09 75 views
1

我正在学习使用LINQ,EF等。我有2个自动生成的edmx类coursestudent。我写了一个代码来访问course idcourse name。有了这些数据,我也想分别获取参加课程的students names的数据。以下是我的代码。访问一对多关系数据

testEntities1 t = new testEntities1(); 
       var u = (from g in t.courses 
         select new 
         { 
          g.C_Id, 
          g.C_Name, 
          dd = g.student.Select(r=>r.S_Name) 

         }).ToList(); 

现在如何使用/我从中选择了其中包含有谁报名参加课程的所有学生的名字属性dd获取数据。我可以将数据存入变量u。我只是不知道如何处理并从dd获取数据。请帮忙。以下是获取course idcourse name的数据的行。我如何获得学生姓名的数据。所有的

List<course> ui = u.Select(d => new course() { C_Name = d.C_Name, C_Id = d.C_Id }).ToList(); 
+0

你可以发布课程类型吗? – 2014-12-09 12:46:30

回答

0

首先没有必要先获取数据到anonymous类型,然后将其添加到您的自定义类型course,你可以按照以下提到的直接做到这一点。现在,既然你没有提到的course的类型,我正在考虑以下两个possibilites: -

案例1:如果有学生的姓名作为coursepublic List<string> Students_Enrolled { get; set; }即要取那么学生名单录取: -

List<course> u = (from g in t.courses 
        select new course 
        { 
         C_ID = g.C_Id, 
         C_Name = g.C_Name, 
         Students_Enrolled = g.student.Select(r => r.S_Name).ToList() 
        }).ToList(); 

案例2:如果有学生的姓名为public string Students_Enrolled { get; set; }也就是说,如果你想获取逗号分隔的学生姓名,那么你可以这样做: -

List<course> u = (from g in t.courses 
        select new course 
        { 
         C_ID = g.C_Id, 
         C_Name = g.C_Name, 
         Students_Enrolled = String.Join(",",g.student.Select(r => r.S_Name)) 
        }).ToList(); 
+0

如果您看到我的课程课程,它有ICE选择。我试过你的第一个选择,但我得到错误,因为不能从列表转换为列表 user2998990 2014-12-10 04:28:52

+0

@ user2998990 - 因为如果你注意到我在案例1中提到过,我已经考虑到Students_Enrolled是'List ',这就是我问你“课程”的类型。 – 2014-12-10 05:03:57

+0

但现在可以做些什么?我有一个自动生成的类cousrse,它具有ICollection user2998990 2014-12-10 05:11:11