Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LINQ查询中串联列表_Linq_Entity Framework_Entity Framework 4 - Fatal编程技术网

在LINQ查询中串联列表

在LINQ查询中串联列表,linq,entity-framework,entity-framework-4,Linq,Entity Framework,Entity Framework 4,我的数据结构是这样设置的 用户接受多个模块 一个模块包含许多课程 以下是这种关系的样子: 如何获取用户所修课程的列表 我现在的问题是: var courses = (from ClassEnrollment enrolment in entities.ClassEnrollment where enrolment.UserID == UserID join Module module in en

我的数据结构是这样设置的

  • 用户接受多个模块
  • 一个模块包含许多课程
以下是这种关系的样子:

如何获取用户所修课程的列表

我现在的问题是:

  var courses = (from ClassEnrollment enrolment in entities.ClassEnrollment
                       where enrolment.UserID == UserID
                       join Module module in entities.Module
                         on enrolment.ModuleID equals module.ID

                         select module.Course
                     ).ToList();
然而,这并不会产生一个课程列表,而是一个课程列表

如何将此查询展平为不同课程的列表?

使用。

使用。

您可以使用

课程。选择多个(c=>c)

在查询中,不需要显式指定范围变量的类型

或者您可以将课程加入查询

var query = from enrolment in entities.ClassEnrollment
            join module in entities.Module on enrolment.ModuleID equals module.ID
            join course in entities.Course on module.CourseID equals course.ID
            where enrolment.UserID == UserID
            select course;

var course = query.ToList();
你可以用

课程。选择多个(c=>c)

在查询中,不需要显式指定范围变量的类型

或者您可以将课程加入查询

var query = from enrolment in entities.ClassEnrollment
            join module in entities.Module on enrolment.ModuleID equals module.ID
            join course in entities.Course on module.CourseID equals course.ID
            where enrolment.UserID == UserID
            select course;

var course = query.ToList();
大概是这样的:

var courses = from ClassEnrollment enrolment in entities.ClassEnrollment
              from module in entities.Module
              where enrolment.ModuleID equals module.ID && enrolment.UserID equals UserID
              select module.Course
var courses = entities.
              ClassEnrollment.
              Where(e => e.UserID == UserID).
              SelectMany(e => e.Module.Courses).
              ToList();
大概是这样的:

var courses = from ClassEnrollment enrolment in entities.ClassEnrollment
              from module in entities.Module
              where enrolment.ModuleID equals module.ID && enrolment.UserID equals UserID
              select module.Course
var courses = entities.
              ClassEnrollment.
              Where(e => e.UserID == UserID).
              SelectMany(e => e.Module.Courses).
              ToList();

根据您的数据结构屏幕截图,在
类注册
模块
之间存在一对多关系,以及名为
模块
的导航属性。在
模块
课程
之间也有多对多关系,但导航属性应称为
课程
。根据您的代码,您需要以下内容:

var courses = from ClassEnrollment enrolment in entities.ClassEnrollment
              from module in entities.Module
              where enrolment.ModuleID equals module.ID && enrolment.UserID equals UserID
              select module.Course
var courses = entities.
              ClassEnrollment.
              Where(e => e.UserID == UserID).
              SelectMany(e => e.Module.Courses).
              ToList();

但是,您的问题提到了一个用户:
一个用户学习了许多模块
如何获取用户所学课程的列表?
。不过,我在其他地方看不到任何用户实体,所以如果您能澄清一下,那就太好了。顺便说一句,您正在使用LINQ to SQL吗?

根据您的数据结构屏幕截图,您在
类注册
模块
之间有一对多的关系,以及名为
模块
的导航属性。在
模块
课程
之间也有多对多关系,但导航属性应称为
课程
。根据您的代码,您需要以下内容:

var courses = from ClassEnrollment enrolment in entities.ClassEnrollment
              from module in entities.Module
              where enrolment.ModuleID equals module.ID && enrolment.UserID equals UserID
              select module.Course
var courses = entities.
              ClassEnrollment.
              Where(e => e.UserID == UserID).
              SelectMany(e => e.Module.Courses).
              ToList();

但是,您的问题提到了一个用户:
一个用户学习了许多模块
如何获取用户所学课程的列表?
。不过,我在其他地方看不到任何用户实体,所以如果您能澄清一下,那就太好了。顺便说一句,您使用的是LINQ到SQL吗?

我使用的是实体框架。首先,我没有在类注册和用户之间添加关联,所以我的屏幕截图中没有包含这一点。现在考虑一下,我想我应该加入关联。我使用的是实体框架。首先,我没有在类注册和用户之间添加关联,所以我的屏幕截图中没有包含这一点。现在想起来,,我想我应该加入关联。它与我原来的查询有什么不同?@Extrakun:它应该将结果展平,因为它在引擎盖下使用了
SelectMany
。它与我原来的查询有什么不同?@Extrakun:它应该将结果展平,因为它在引擎盖下使用了
SelectMany
。模块没有courseID,它具有导航属性课程,EF内是模块关联的课程列表。模块没有courseID,它具有导航属性课程,EF内是模块关联的课程列表。