2014-01-15 25 views
0

MVC MODEL
採用這種模式,我想執行一個左外連接課程表,學生表,並在課程搜索下拉菜單中顯示出來。 我的MVC代碼是:MVC 5的LINQ SQL執行從3個搜索連接表

var query = from c in db.Students 
        join o in db.Enrollments on c.StudentID equals o.StudentID 
        join co in db.Courses on o.CourseID equals co.CourseID into sr 
        from x in sr.DefaultIfEmpty() 
        select new Student 
        { 
         FirstName=c.FirstName, 
         LastName=c.LastName, 
         EnrollmentDate=c.EnrollmentDate, 
         MiddleName=c.MiddleName, 
         StudentID=c.StudentID 
         //StudentName = c.FirstName.ToString(), 
         //CourseID = x.CourseID.ToString(), 
         //CourseName = x.Title.ToString() 
         //== null ? -1 : x.Title 
        }; 
if (!string.IsNullOrEmpty(course)) 
     { 
     students = query.Where(x => x.CourseName == course).Select(item=>new Student(){FirstName = c.FirstName.ToString()}).ToList(); 
     } 
     return View(students); 

但我無法讓它工作。有人可以請教我如何正確地做到這一點。 這是樣本屏幕: enter image description here

+0

請,澄清*我無法得到它的工作*表示。例外?錯誤的結果?你正在使用Linq到Sql或Entity Framework? –

+0

錯誤是:在學生= query.Where(x => x.CourseName ==課程).Select(item => new Student(){FirstName = c.FirstName)當前上下文中不存在名稱'c' 。的ToString()})ToList();所有的拳頭,我是否正確地做到這一點?另一個錯誤是,無法將類型'System.Linq.IQueryable '隱式轉換爲'System.Linq.IQueryable '。存在明確的轉換(您是否缺少演員?) – Alex

+0

您的選擇運算符中有'item'變量名稱。正確的查詢看起來像'students = query.Where(x => x.CourseName == course).Select(item => new Student {FirstName = item.FirstName})。ToList();'如果就是這樣,那麼你可以關閉這個問題 –

回答

1
public List<Student> GetStudentsByCourseName(string courseName) 
    { 
     var list = new List<Student>(); 
     var course = db.Courses.SingleOrDefault(o => o.Title == courseName); 

     if (course != null) 
     { 
      list = course.Enrollments.Select(o => new Student { 
        FirstName = o.Student.FirstName, 
        LastName = o.Student.LastName 
       }).ToList(); 
     } 

     return list; 
    } 
+0

羅納德,謝謝你,但是,我想問一下,如果id既像課程和學生的名字是搜索查詢? – Alex

+0

你可以進一步細化這樣的結果,GetStudentsByCourseName(「biology」)。Where(student => student.FirstName ==「bob」) – Ronald

+0

Thanks男人,你的天使:D Im新的asp.net mvc和我已經愛這種語言:D – Alex