C# 如果数据库中有日期,则比较日期
我有一个简单的LINQ查询。如果数据库中有条目,我只想检查DateDisable。如果用户没有选择禁用日期,则将始终显示条目。有人能告诉我如何在linq中添加条件语句吗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.
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
aDateTime?
?如果是这样,那么这不只是检查where promo.DateDisable!=null
?它是可以为null的,如果值在那里,那么我确实要检查它