SQL server will automatically cast '01/01/0001 00:00:00' to a date. Where as, I'm pretty sure, the .NET language is comparing strings. You should always use proper types in .NET being that .NET is a typed language.
Secondly, what the heck is
(due >= '01/01/0001 00:00:00' and due < '01/01/0001 00:00:00')