I have a search form where users can enter ValidFrom
and ValidTo
dates,
There are three conditions:
ValidFrom
andValidTo
NOT NULL
Action: Get values between two dates
ValidFrom
isNOTNULL
andValidTo
isNULL
Action: Get values where date is greater than ValidFrom
ValidFROM
isNULL
andValidTo
isNOTNULL
Action: get values where date is less than ValidTo
This is what I have got:
if (model.ValidFrom != null && model.ValidTo != null)
{
var dateFrom = (DateTime)model.ValidFrom;
var dateTo = (DateTime)model.ValidTo;
dalList = dalList.Where(s =>
DbFunctions.TruncateTime(s.ValidFrom) >= dateFrom.Date
&& DbFunctions.TruncateTime(s.ValidTo) <= dateTo.Date).AsQueryable();
}
if (model.ValidFrom != null && model.ValidTo == null)
{
var dateFrom = (DateTime)model.ValidFrom;
dalList = dalList.Where(s => DbFunctions.TruncateTime(s.ValidFrom) >= dateFrom.Date).AsQueryable();
}
if (model.ValidFrom == null && model.ValidTo != null)
{
var dateTo = (DateTime)model.ValidTo;
dalList = dalList.Where(s => DbFunctions.TruncateTime(s.ValidTo) <= dateTo.Date).AsQueryable();
}
Is there a better way to write this type of search?