I've got the following function:
Expand|Select|Wrap|Line Numbers
- public static List<Order> FilterByDateRange(List<Order> _list,string _sdate, string _edate)
- {
- if (_list.Count == 0) return null;
- DateTime _start = Convert.ToDateTime(_sdate);
- string[] _ed = _edate.Split(' ');
- string _edate2 = _ed[0] + " 23:59:59";
- DateTime _end = Convert.ToDateTime(_edate2);
- List<Order> result = (from obj in _list
- where
- (((DateTime)obj.DespatchDate >= _start) &&
- ((DateTime)obj.DespatchDate <= _end))
- select obj).ToList();
- return result;
- }
I have three orders where obj.DespatchDate equals
{18/02/2010 18:03:01}
{20/02/2010 14:01:51}
{20/02/2010 14:02:03}
I supply a date range that gives
_start = {20/02/2010 00:00:00}
_end = {22/02/2010 23:59:59}
Problem: result always gets a Count = 0 where I would expect a Count of 2. I stepped through the code and very carefully checked the values of the various dates, so I know they are correct.
Am I being incredibly stupid (certainly not an impossibility) or does date comparison not work in LINQ?
PS. obj.DespatchDate is type (DateTime?) - but that should not make any difference