The problem appears to be the time part of your datetime fields - note that in your SQL you are checking
StartDate = '2014-02-01 00:00:00.000' AND
EndDate = '2014-02-28 23:59:59.000'
but you state the dates on your calendar are '2014-02-01' and '2014-02-28'.
Try comparing the date only - there are 2 potential solutions on this CP article -
LINQ query to compare only date part of DateTime[
^]
Incidentally, the reason that you get lots of results when you change
&& re.StartDate == frmdate
to
|| re.StartDate == frmdate
is because you are mixing ANDs and ORs without any parentheses.
where
re.Region == regionvalue
|| re.StartDate == frmdate
&& re.EndDate == tdatee
Putting parentheses in place isn't worth it as you will still hit the problem with the time.