Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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
C# 如何在实体框架4.1中使用Linq执行以下操作_C#_Linq_Ef Code First - Fatal编程技术网

C# 如何在实体框架4.1中使用Linq执行以下操作

C# 如何在实体框架4.1中使用Linq执行以下操作,c#,linq,ef-code-first,C#,Linq,Ef Code First,假设上述给定的数据模型,如何在EF4.1中执行以下查询 Select students.firstname ,students.lastname ,classes.classname ,IsNull(studentsclasses.id,0) Attending from students cross join classes left outer join studentsclasses on studentsclasses.classid = classes.c

假设上述给定的数据模型,如何在EF4.1中执行以下查询

Select 
   students.firstname
   ,students.lastname
   ,classes.classname
   ,IsNull(studentsclasses.id,0) Attending 
from students
cross join classes 
left outer join studentsclasses on studentsclasses.classid = classes.classid 
            and studentsclasses.studentid = students.studentid
where students.studentid = 5
以下是我的尝试

from s in Students
from c in Classes
select new {
              StudentFirstName = s.Firstname,
              StudentLastName = s.Lastname,
              ClassName = c.Classname
           }

在实体框架中,
学生
之间的关系应通过包含学生相关的所有类的每个
学生
实体中的导航属性
来表示。使用此选项,您可以执行以下操作:

var student = Students.FirstOrDefault( s = > s.studentid == 5);
if(student!=null)
{
  var studentClasses = student.classes.Select( c => new
  {
     StudentFirstName = student.Firstname,
     StudentLastName = student.Lastname,
     ClassName= c.Classname     
  });
  //..
}

在实体框架中,
学生
之间的关系应通过包含学生相关的所有类的每个
学生
实体中的导航属性
来表示。使用此选项,您可以执行以下操作:

var student = Students.FirstOrDefault( s = > s.studentid == 5);
if(student!=null)
{
  var studentClasses = student.classes.Select( c => new
  {
     StudentFirstName = student.Firstname,
     StudentLastName = student.Lastname,
     ClassName= c.Classname     
  });
  //..
}

这个问题是我能够连接两个类的第三列。但是,在EF 4.1中,您没有中间类。因此,我无法获得第三列的值。@Mohit:您指的是哪一列?对不起,第四列。查看以下查询选择students.firstname、students.lastname、classes.classname、IsNull(studentsclasses.id,0)从学生处参加交叉连接课程左外部连接学生在学生上的课程classid=classes.classid和StudentsClassID=studentid=studentid.studentid其中studentid.studentid=5问题是第三列,我可以连接两个课程。但是,在EF 4.1中,您没有中间类。因此,我无法获得第三列的值。@Mohit:您指的是哪一列?对不起,第四列。查看以下查询选择students.firstname、students.lastname、classes.classname、IsNull(studentsclasses.id,0)从学生交叉加入课堂左侧外部加入studentsclasses上的studentsclasses.classid=classes.classid和studentsclasses.studentid=students.studentid=5