根据其中一个datetime列的值选择数据库实体

本文关键字:datetime 选择 实体 数据库 一个 | 更新日期: 2023-09-27 18:03:59

我在数据库中有表article。表中包含Date Expiration列,该列可以为空

我想选择文章,如果它没有过期。我有下面的代码,但不幸的是,它不起作用。

var lstArticle = (from a in Articles.ToList()
                  where a.Block == false
                        && a.DateExpiration < DateTime.Now
                  select a).ToList();

请帮帮我

编辑:

我使用这个代码,并且它工作。

var lstArticle = (from a in Articles.ToList()
                  where a.Block == false
                        && ((!a.DateExpiration.HasValue) || (a.DateExpiration.HasValue && a.DateExpiration.Value < DateTime.Now))
                  select a).ToList();

根据其中一个datetime列的值选择数据库实体

如果没有日期意味着该项目还没有过期,这应该可以达到目的:

var lstArticle = (from a in Articles.ToList()
                  where a.Block == false
                        && (!a.DateExpiration.HasValue || a.DateExpiration < DateTime.Now)
                  select a).ToList();

如果没有日期意味着项目已经过期,这应该工作:(根据您的注释,您需要第一个例子)
var lstArticle = (from a in Articles.ToList()
                  where a.Block == false
                        && (a.DateExpiration.HasValue && a.DateExpiration < DateTime.Now)
                  select a).ToList();

我刚刚注意到,如果您从源中选择确切的对象,则不需要在select语句中使用"new"关键字。

假设DateExpirationDateTime?,使用如下:

var lstArticle =
    (from a in Articles.ToList()
     where a.Block == false
        && a.DateExpiration.HasValue
        && a.DateExpiration.Value < DateTime.Now
     select new a).ToList();