LINQ: display results from empty lists
- by Douglas H. M.
I've created two entities (simplified) in C#:
class Log {
entries = new List<Entry>();
DateTime Date { get; set; }
IList<Entry> entries { get; set; }
}
class Entry {
DateTime ClockIn { get; set; }
DateTime ClockOut { get; set; }
}
I am using the following code to initialize the objects:
Log log1 = new Log() {
Date = new DateTime(2010, 1, 1),
};
log1.Entries.Add(new Entry() {
ClockIn = new DateTime(0001, 1, 1, 9, 0, 0),
ClockOut = new DateTime(0001, 1, 1, 12, 0, 0)
});
Log log2 = new Log()
{
Date = new DateTime(2010, 2, 1),
};
The method below is used to get the date logs:
var query =
from l in DB.GetLogs()
from e in l.Entries
orderby l.Date ascending
select new
{
Date = l.Date,
ClockIn = e.ClockIn,
ClockOut = e.ClockOut,
};
The result of the above LINQ query is:
/*
Date | Clock In | Clock Out
01/01/2010 | 09:00 | 12:00
*/
My question is, what is the best way to rewrite the LINQ query above to include the results from the second object I created (Log2), since it has an empty list. In the other words, I would like to display all dates even if they don't have time values.
The expected result would be:
/*
Date | Clock In | Clock Out
01/01/2010 | 09:00 | 12:00
02/01/2010 | |
*/