2013-04-06 166 views
0

我正在处理与EF的ASP.Net MVC4应用程序,我正在编写我的查询。我还在探索linq!将SQL语句转换为LINQ

这是我的SQL语句:在那里我有7台,使它们之间的连接::日期,学生,任务,定时,分配,SousType,TypeT

select type , from Date , Student, Task, Timing , Assign ,SousType,TypeT 
where DateT.ID_Date=Timing.ID_Date and Timing.ID_Timing = Assign.ID_Assign and Assign.ID_Student=Student.ID_Student 
and Assign.ID_Task= Task.ID_Task and Task.ID_SousType = SousType.ID_Sousype and SousType.ID_TypeT = TypeT.ID_Type ; 

我开始转换一步一步来,但我可以走得更远,

var students = from s in db.student 
         select s; 
    IQueryable<Assign> mylist = db.Assign.Where(s => s.ID_Student == students.ID_student); 

但我不能保持同样的方式处理,以验证每个表的ID,因为我有“的IQueryable”。

我以正确的方式!

+0

一个建议:在你的LINQ之类的语句尝试使用[导航性能(http://stackoverflow.com/a/12326327/861716)' student.Assigns'(或其他)。英孚将为您完成加入。 – 2013-04-06 19:15:03

回答

0

退房LINQ 101,有一个专用的连接操作:http://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9

+0

人们更喜欢只加入少于3张桌子,但在这种情况下,我们更愿意一个一个去参加!这就是他们告诉我们的 – ImnotaGeek 2013-04-06 17:25:26

+0

IQueryable是一种被执行的形式。除非你访问结果(通过枚举或FirstOrDefault或ToList等),否则你写的语句实际上不会做任何事情。我不知道这些人是谁,但加入是最有效的:)。或者这是作业,也许我的解决方案不包括课程的这一部分:)? – Zyphrax 2013-04-06 17:30:44

+0

也许从修改你的SQL语句开始,让你有这个工作,然后看看LinqPad(在SQL和LINQ之间转换的应用程序)。并且看看LINQ 101的例子,以更好地理解LINQ。 – Zyphrax 2013-04-06 17:36:48