LINQ 2 Entities,如何在LINQ查询中检查DateTime.HasValue?

5
我有一个方法,应该从名为ENTRY的表格(和EntitySet)中获取最新发布的消息。
/// 该方法将“天数”作为参数,用于创建新的TimeSpan(days,0,0,0);!!
using (Entities db = new Entities())
    {
        var entries = from ent in db.ENTRY
                      where ent.DATECREATE.Value > DateTime.Today.Subtract(new TimeSpan(days, 0, 0, 0))
                      select new ForumEntryGridView()
                      {
                          id = ent.id,
                          baslik = ent.header,
                          tarih = ent.entrydate.Value,
                          membername = ent.Member.ToString()
                      };
        return entries.ToList<ForumEntryGridView>();
    }

这里数据库中的DATECREATED是可空的。我不能在这个查询中放置“if”语句……有没有办法检查它?提前感谢。

2个回答

6

如果DATECREATEDnull,你想要做什么?

如果您只想忽略这些记录,请使用附加条件(或where子句):

var entries = from ent in db.ENTRY
              where ent.DATECREATED.HasValue && ent.DATECREATED.Value > ...

0

嗯...你可以通过简单地使用DATECREATED等于null来排除条目。

entries = from ent in db.ENTRY 
          where ent.DATECREATED != null
          where ent.DATECREATE.Value > DateTime.Today....

并将它们与

一起包含。
  entries = from ent in db.ENTRY 
          where ent.DATECREATED == null ||
                ent.DATECREATE.Value > DateTime.Today.....

我不确定第二个查询在第一个条件为真时是否停止检查where子句。


对于你上次的“我不确定”,答案是它确实会,因为这就是||的工作原理。 - Domenic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接