LINQ 2 Entities, как проверить DateTime.HasValue в запросе linq - PullRequest
4 голосов
/ 03 мая 2010

У меня есть этот метод, который должен получать последние сообщения из таблицы (& EntitySet) с именем ENTRY

/// метод получает "days" в качестве параметра, используемого в новом 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 имеет значение Nullable в базе данных. Я не могу поставить «если» в этом запросе ... какой-нибудь способ проверить это? Спасибо заранее

Ответы [ 2 ]

5 голосов
/ 03 мая 2010

Что вы хотите сделать, если DATECREATED равно null?

Если вы просто хотите игнорировать эти записи, используйте дополнительное условие (или предложение where):

var entries = from ent in db.ENTRY
              where ent.DATECREATED.HasValue && ent.DATECREATED.Value > ...
0 голосов
/ 03 мая 2010

Ну ... вы можете исключить записи с DATECREATED, равным нулю, просто используя

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 после выполнения первого условия.

...