Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果数据库中有日期,则比较日期_C#_.net_Linq - Fatal编程技术网

C# 如果数据库中有日期,则比较日期

C# 如果数据库中有日期,则比较日期,c#,.net,linq,C#,.net,Linq,我有一个简单的LINQ查询。如果数据库中有条目,我只想检查DateDisable。如果用户没有选择禁用日期,则将始终显示条目。有人能告诉我如何在linq中添加条件语句吗 return (from promo in context.Promoes where promo.DateEnable <= DateTime.Today where promo.DateDisable >= DateTime.Today orderby promo.

我有一个简单的LINQ查询。如果数据库中有条目,我只想检查DateDisable。如果用户没有选择禁用日期,则将始终显示条目。有人能告诉我如何在linq中添加条件语句吗

return (from promo in context.Promoes
        where promo.DateEnable <= DateTime.Today
        where promo.DateDisable >= DateTime.Today
        orderby promo.SortOrder
        select promo).ToList();
返回(来自context.promos中的promo
其中promo.DateEnable=DateTime.Today
orderby promo.SortOrder
选择promo.ToList();
,您可以执行以下操作:

// Get today.
DateTime today = DateTime.Today;

return (
    from promo in context.Promoes
    where 
        promo.DateEnable <= today &&
        (promo.DateDisable == null || promo.DateDisable >= today)
    orderby promo.SortOrder
    select promo
).ToList();
//今天就开始吧。
DateTime today=DateTime.today;
返回(
来自上下文中的promo。Promos
哪里
promo.DateEnable=今天)
orderby promo.SortOrder
选择宣传片
).ToList();
基本上,您需要检查
null
或日期是否大于今天

此外,您还应该捕获语句之外的值,不能保证LINQ提供程序在数据库端正确转换

但是,请注意,由于延迟执行,如果您等待很长时间来执行查询,
今天
可能不会给您预期的值(如果声明查询和执行查询之间的时间超过午夜)


当然,如果数据库服务器与应用程序服务器位于不同的时区,则需要确保
DateTime.Today
由LINQ提供程序正确处理(以便在服务器上执行),如果要与DB服务器上的时间进行比较,请使用它。如果您的提供商不能正确地翻译
DateTime.Today
,那么您将不得不求助于存储过程并调用它。

DateDisable
a
DateTime?
?如果是这样,那么这不只是检查
where promo.DateDisable!=null
?它是可以为null的,如果值在那里,那么我确实要检查它