0

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();
4

2 回答 2

5

如果没有日期意味着该项目尚未过期,这应该可以解决问题:

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”关键字。

于 2013-03-13T21:03:40.307 回答
1

假设DateExpirationDateTime?,使用这个:

var lstArticle =
    (from a in Articles.ToList()
     where a.Block == false
        && a.DateExpiration.HasValue
        && a.DateExpiration.Value < DateTime.Now
     select new a).ToList();
于 2013-03-13T21:05:22.727 回答