2009-12-07 6 views
0

J'ai 2 tables, Employee et Absence. Je veux faire une jointure externe gauche pour que je reçoive tous les employés et toutes les absences associées. En LINQ2SQL je peux utiliser ce qui suit pour créer LEFT OUTER JOIN:Comment traiter le champ DateTime lors de l'utilisation de LEFT OUTER JOIN dans LinqToSql

from e in Employees 
join a in Absences on e.EmployeeID equals a.EmployeeID into ae 
from x in ae.DefaultIfEmpty() 
select new { FullName = e.Surname + ", " + e.Forename } 

C'est ce que je cherche, mais je veux montrer toute absence dates de début. Je peux modifier l'instruction select à

select new { FullName = e.Surname + ", " + e.Forename, x.StartDate } 

mais j'obtiens une erreur car DateTime n'est pas Nullable. Comment puis-je afficher une chaîne vide s'il n'y a pas StartDate ou la date actuelle s'il y en a une? J'ai essayé d'utiliser x.StartDate.ToShortDateString() mais cela jette évidemment une erreur si elle est nulle, j'ai aussi essayé:

select new {Surname = e.Surname, StartDate = x.StartDate == null ? "" : x.StartDate } 

mais cela ne fonctionne pas non plus. Aucune suggestion?

+0

Vous ne savez pas si cela fonctionnera, en essayant d'utiliser une distribution explicite: select new {StartDate = (DateTime?) X.StartDate} – LorenVS

Répondre

0

Dans instruction select écrire

sélectionnez Nouveau {FullName = e.Surname + "" + e.Forename, StartDate = (DateTime?) X.StartDate}

Cela devrait fonctionner pour vous.