採用這種模式,我想執行一個左外連接課程表,學生表,並在課程搜索下拉菜單中顯示出來。 我的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);
但我無法讓它工作。有人可以請教我如何正確地做到這一點。 這是樣本屏幕:
請,澄清*我無法得到它的工作*表示。例外?錯誤的結果?你正在使用Linq到Sql或Entity Framework? –
錯誤是:在學生= query.Where(x => x.CourseName ==課程).Select(item => new Student(){FirstName = c.FirstName)當前上下文中不存在名稱'c' 。的ToString()})ToList();所有的拳頭,我是否正確地做到這一點?另一個錯誤是,無法將類型'System.Linq.IQueryable'隱式轉換爲'System.Linq.IQueryable '。存在明確的轉換(您是否缺少演員?) –
Alex
您的選擇運算符中有'item'變量名稱。正確的查詢看起來像'students = query.Where(x => x.CourseName == course).Select(item => new Student {FirstName = item.FirstName})。ToList();'如果就是這樣,那麼你可以關閉這個問題 –