C# 如何在实体框架4.1中使用Linq执行以下操作
假设上述给定的数据模型,如何在EF4.1中执行以下查询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
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