访问一对多关系数据

时间:2014-12-09 12:16:20

标签: c# linq entity-framework

我正在学习使用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();

1 个答案:

答案 0 :(得分:0)

首先,无需先将数据提取到anonymous类型,然后将其添加到自定义类型course,您可以直接执行此操作,如下所述。现在,既然你没有提到course的类型,我正在考虑跟随两个可能性: -

案例1:如果public List<string> Students_Enrolled { get; set; }中的学生姓名为course,即您想要提取已注册学生的列表,那么: -

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();
相关问题