linq中判断DateTime类型是否为空

在linq中判断如下代码varquery=(fromninEntityDb.NewswhereString.IsNullOrEmpty(news.id)?true:n.i... 在linq中判断如下代码
var query = (from n in EntityDb.News
where String.IsNullOrEmpty(news.id) ? true : n.id == news.id
where String.IsNullOrEmpty(news.title) ? true : n.title == news.title
where String.IsNullOrEmpty(news.content) ? true : n.content == news.content
where String.IsNullOrEmpty(news.userid) ? true : n.userid == news.userid
where (news.dateTimeNow==null) ? true : n.dateTimeNow == news.dateTimeNow
orderby n.id ascending
select n);

红字的那一段是我写的代码,dateTimeNow 在数据库中是datetime类型的不允许为空!上方的代码是一个查询方法,根据我传递过来的参数进行查询。既然是查询,肯定不是一定要每个参数都有值的。问题就出现在,当news实体传递过来的时候如果dateTimeNow为空的话。查询就会报“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
”如何解决。主要就是判断当news.dateTimeNow==null是怎样让他不执行where (news.dateTimeNow==null) ? true : n.dateTimeNow == news.dateTimeNow现在只要执行到这一句就报错!!!问了好几个同事都没有最优的解决方案。希望 各位大大,指教一下。
上述问题现已经解决,现在请教Linq中如何格式化DateTime类型的数据。什么?Convert.ToDateTime(),xxx.ToString()之类的就不用说了。那不中!!!!目前已经有一种比较笨笨的解决方式
query = query.Where(n =>n.dateTimeNow.Year == news.dateTimeNow.Year
&& n.dateTimeNow.Month == news.dateTimeNow.Month
&& n.dateTimeNow.Day == news.dateTimeNow.Day
&& n.dateTimeNow.Hour == news.dateTimeNow.Hour
&& n.dateTimeNow.Minute == news.dateTimeNow.Minute
&& n.dateTimeNow.Second == news.dateTimeNow.Second
想知道有没有更好的解决方案!!!满意++++++++++++++++分
展开
 我来答
夜来雨早来晴
推荐于2018-03-28 · TA获得超过3.1万个赞
知道大有可为答主
回答量:9110
采纳率:60%
帮助的人:787万
展开全部
Datetime是struct,值类型,值类型是不能为null的.只有Datetime的泛型表达DateTime?类型可以赋值为null,但这只是一种简写,DateTime?的实际类型为Nullable<DateTime>.所有值类型都可以转换为这种形式来赋值为null.
月冷_星晴
2011-08-30 · TA获得超过146个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:161万
展开全部
你可以试试使用.net的新特性
在C#声明这个日期字段的时候这样写
DateTime? time;
然后这个字段就可以设置空值
如time =null;
取值和赋值的时候使用的是 time.Value;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
2011-08-30 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5430万
展开全部
用DateTime.MinValue作为未赋值标志
where (news.dateTimeNow==DateTime.MinValue)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
344367382
2011-08-30 · TA获得超过125个赞
知道答主
回答量:74
采纳率:0%
帮助的人:43.3万
展开全部
news.dateTimeNow == default(DateTime?)
或者
news.dateTimeNow==DBNull.Value
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式