看错误信息应该是时间为空的情况没有处理吧,DateTime.CompareTo(DateTime) 方法接收的参数不是可空的,所以一旦传个null进去,就会报这个错了吧。
既然定义为可空类型,所以你应该先判断dateBegin,dateEnd是否为空:如果为空应该有套逻辑去处理,比如给个默认值或者干脆就不比较什么的;不为空的时候再用Convert.ToDateTime(r.RECORDDATE).CompareTo(dateBegin.value)去比较。
至于和silverlight调试的关系,我也不太清楚,没搞过,我猜是因为某些动作导致没法正确的从页面或得到时间值,导致转换为DateTime时为空了吧。

解决方案 »

  1.   

    谢谢1L朋友的回复数据库里该字段虽然设置了可为空,但实际上都不是空的,而且也都是正确的时间字符串格式。我也想到是不是数据库里字符串格式不能确定是否是日期格式导致的。。但是学LINQ时间不长,不知道怎么判断。。我只会在表达式里写条件过滤。。只有Load(查询函数)之后才会得到查询数据,所以我直接写判断是不行的。。不知怎么解决。。
      

  2.   

    额,不好意思。我也发现了,那个方法还有个重载,所以null也是可以的。