如何解决转换为值类型'System.Int32'失败,因为实例化值为null
我有一个Linq查询,但是它给出了以上错误,我猜是由于NULL所致,因为当学期列的值大于Module和Block的值,而Module和block的值为null时,我将Module,Block和semester设置为可空int比semster更有价值。如何处理以下查询。
var test1 = (from c in db.StudentCoursesAssigned
join e in db.Years
on c.Year_Id equals e.Id into table1 from e in table1.DefaultIfEmpty()
join cc in db.Courses
on c.Course_Id equals cc.Course_Id into table2 from cc in table2.DefaultIfEmpty()
join g in db.grades
on c.Grade equals g.Id into table3 from g in table3.DefaultIfEmpty()
join m in db.Moduels
on c.Module_Id equals m.Id into table4 from m in table4.DefaultIfEmpty()
join p in db.Programs
on c.Program_Id equals p.Id into table5 from p in table5.DefaultIfEmpty()
join b in db.Blocks
on c.Block_Id equals b.Id into table6 from b in table6.DefaultIfEmpty()
join s in db.Semesters
on c.Semster_Id equals s.Semester_Id into table7 from s in table7.DefaultIfEmpty()
join ss in db.Students
on c.Student_id equals ss.Student_Id into table8 from ss in table8.DefaultIfEmpty()
select new
{
Student_Name=ss.Student_FName,Course=cc.Course_Name,Active=c.Active,Course_start_date=c.Enrolment_Start,Course_End_date=c.Enrolment_End,Grade=g.Name,Module=m.Name,Program=p.Program_Title,Year=e.Id,Semester=s.Semester_Title,blocks=b.Id
}).ToList();
解决方法
那是解决问题的正确Linq查询
var test1 = (from c in db.StudentCoursesAssigned
join e in db.Years
on c.Year_Id equals e.Id into table1 from e in table1.DefaultIfEmpty()
join cc in db.Courses
on c.Course_Id equals cc.Course_Id into table2 from cc in table2.DefaultIfEmpty()
join g in db.grades
on c.Grade equals g.Id into table3 from g in table3.DefaultIfEmpty()
join m in db.Moduels
on c.Module_Id equals m.Id into table4 from m in table4.DefaultIfEmpty()
join p in db.Programs
on c.Program_Id equals p.Id into table5 from p in table5.DefaultIfEmpty()
join b in db.Blocks
on c.Block_Id equals b.Id into table6 from b in table6.DefaultIfEmpty()
join s in db.Semesters
on c.Semster_Id equals s.Semester_Id into table7 from s in table7.DefaultIfEmpty()
join ss in db.Students
on c.Student_id equals ss.Student_Id into table8 from ss in table8.DefaultIfEmpty()
select new
{
Student_Name = ss.Student_FName == null ? "No Value" : ss.Student_FName,Course = cc.Course_Name == null ? "No Value" : cc.Course_Name,Active = c.Active,Course_start_date = c.Enrolment_Start,Course_End_date = c.Enrolment_End,Grade = g.Name == null ? "No Value" : g.Name,Module = m.Name == null ? "No value" : m.Name,Program=p.Program_Title == null ? "No Value" : p.Program_Title,Year=e.Name,Semester=s.Semester_Title == null ? "No Value" : s.Semester_Title,blocks=b.Name == null ? "No Value":b.Name,student_Id=ss.Student_Id,id=c.Id,}).ToList();
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。