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

C# 根据其中一个datetime列的值选择数据库实体,c#,asp.net,linq,C#,Asp.net,Linq,我在数据库中有表文章。该表包含日期过期列,该列可以为空 我想选择未过期的文章。我有以下代码,但不幸的是,它不工作 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 < DateTime.Now
                  select a).ToList();
var lstarce=(来自Articles.ToList()中的a)
其中a.Block==false
&&a.DateExpiration
橡皮泥帮我

编辑:

我使用这个代码,这个工作

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();
var lstarce=(来自Articles.ToList()中的a)
其中a.Block==false
&&(!a.DateExpiration.HasValue)| |(a.DateExpiration.HasValue&&a.DateExpiration.Value
如果没有日期意味着该商品尚未过期,则应执行以下操作:

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

如果没有日期意味着该项目已过期,这应该有效:(根据您的评论,您需要第一个示例)

var lstarce=(来自Articles.ToList()中的a)
其中a.Block==false
&&(a.DateExpiration.HasValue&&a.DateExpiration

我刚刚注意到,如果要从源中选择准确的对象,则在select语句中不需要“new”关键字。

如果没有日期意味着该项尚未过期,则应该这样做:

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

如果没有日期意味着该项目已过期,这应该有效:(根据您的评论,您需要第一个示例)

var lstarce=(来自Articles.ToList()中的a)
其中a.Block==false
&&(a.DateExpiration.HasValue&&a.DateExpiration

我刚刚注意到,如果要从源代码中选择准确的对象,则在select语句中不需要“new”关键字。

假设
DateExpiration
DateTime?
,请使用以下方法:

var lstArticle =
    (from a in Articles.ToList()
     where a.Block == false
        && a.DateExpiration.HasValue
        && a.DateExpiration.Value < DateTime.Now
     select new a).ToList();
var-lstarce=
(摘自Articles.ToList()中的a)
其中a.Block==false
&&a.DateExpiration.HasValue
&&a.DateExpiration.Value
假设
DateExpiration
是一个
DateTime?
,使用以下方法:

var lstArticle =
    (from a in Articles.ToList()
     where a.Block == false
        && a.DateExpiration.HasValue
        && a.DateExpiration.Value < DateTime.Now
     select new a).ToList();
var-lstarce=
(摘自Articles.ToList()中的a)
其中a.Block==false
&&a.DateExpiration.HasValue
&&a.DateExpiration.Value
如果日期为空,您希望如何处理它?您可以尝试将其转换为null并进行筛选。如果日期为null,您希望如何处理它?您可以尝试将其转换为null并进行筛选。第一个示例将选择日期过期为null的项目。第二个示例不会选择DateExpiration为null的项目。但对于您的代码,不要选择日期过期为null的文章。刚刚选择了a.DateExpiration.Hasvalue的文章我希望选择DateExpiration为null,而a.DateExpirationDateExpiration
null
时,您希望行为是什么?如果DateExpiration为null,请选择this@BabakSaeedi然后用奥利弗的第一个建议。它将完美地工作在您的情况下与此代码,没有选择的文章与空日期Expiration@BabakSaeedi当
DateExpiration
null
时,您希望行为是什么?如果DateExpiration为null,请选择this@BabakSaeedi然后用奥利弗的第一个建议。在你的情况下,它会非常有效