LINQ中的左连接出了问题。
我的SQL查询工作正常:
VoilierInscrit vi
join Course co on vi.idCourse = co.Id_Course
join Epreuve ep on co.Id_Course = ep.idcourse
LEFT join Penalite pe on vi.Id_VoilierInscrit = pe.VoilierInscrit
join Tps tp on ep.Id_Epreuve = tp.IDepreuve
where tp.IDvoilierInscrit = vi.Id_VoilierInscrit
ORDER BY Temps
结果('Temps'和'Duree'是TimeSpan):
NumeroSerie Temps Duree
KB48 00:05:00 NULL
JY90 00:15:00 00:05:00
但是当我在LINQ中执行它时,我收到以下错误: '无法将null值分配给类型为System.TimeSpan且不可为空的成员'
var resultat = from vi in db.VoilierInscrit
from co in db.Course.Where(x => vi.idCourse == x.Id_Course)
from ep in db.Epreuve.Where(x => co.Id_Course == x.idcourse)
from pe in db.Penalite.Where(x => vi.Id_VoilierInscrit == x.VoilierInscrit)
.DefaultIfEmpty()
from tps in db.Tps.Where(x => ep.Id_Epreuve == x.IDepreuve)
where tps.IDvoilierInscrit == vi.Id_VoilierInscrit
select new
{
temps = tps.Temps,
SerialNumber = vi.NumeroSerie,
duree = pe.Duree
};
我真的不知道问题出在哪里 - 我的LINQ语法似乎是正确的。