I have some code to search for records created between two input dates (from and to) based upon the createdDate
, however we have just imported some old data and not all of the records have a createdDate
which means that some records are not returned. My idea is that when there is no createdDate
, I use the plannedStartDate
instead. This is my original code:
mainTables = mainTables.Where(d =>
d.n.CreatedDate >= AdminSearchVm.AdminSearch.SubmittedFrom &&
d.n.CreatedDate <= AdminSearchVm.AdminSearch.SubmittedTo);
but I would like to do something like this:
mainTables = mainTables.Where(d =>
d.n.CreatedDate == null ? d.n.PlannedStartDate :
d.n.CreatedDate >=
AdminSearchVm.AdminSearch.SubmittedFrom && d.n.CreatedDate == null ?
d.n.PlannedStartDate :
d.n.CreatedDate <= AdminSearchVm.AdminSearch.SubmittedTo);
Maybe you can use this approach:
mainTables = mainTables
.Select(t => new { Table = t, Date = (t.n.CreatedDate ?? t.n.PlannedStartDate) })
.Where(x => x.Date >= AdminSearchVm.AdminSearch.SubmittedFrom && x.Date <= AdminSearchVm.AdminSearch.SubmittedTo)
.Select(x => x.Table);