2013-04-06 164 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