Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 比较日期/日期时间行实体SQL Where子句_Entity Framework_Datetime_Comparison_Entity Sql - Fatal编程技术网

Entity framework 比较日期/日期时间行实体SQL Where子句

Entity framework 比较日期/日期时间行实体SQL Where子句,entity-framework,datetime,comparison,entity-sql,Entity Framework,Datetime,Comparison,Entity Sql,我有一个方法,它接受ObjectQuery,并根据是否接收各种过滤器参数的值向其中添加Where子句。该方法必须返回ObjectQuery。如何进行基本日期比较,例如,where dateX

我有一个方法,它接受ObjectQuery,并根据是否接收各种过滤器参数的值向其中添加Where子句。该方法必须返回ObjectQuery。如何进行基本日期比较,例如,where dateX 这是我当前的代码:

if (myDateFilter != null)
{
    query = query.Where(
        string.Format(
            "it.ExpireDate < cast('{0}' as System.DateTime)",
            myDateFilter));
}
if(myDateFilter!=null)
{
query=query.Where(
字符串格式(
“it.ExpireDate
myDateFilter的值为DateTime.Now,此代码表示:System.Data.SqlClient.SqlException:将varchar数据类型转换为DateTime数据类型会导致值超出范围


所有其他参数都是字符串或整数过滤器,因此实现起来没有问题。任何想法???

你必须知道用户输入数据的格式。看看DateTime.Parse和ParseExact函数

如果您知道格式,可以使用它们将任何输入字符串解析为有效的日期时间。还有一些文化不变量

针对这种情况的一种很好的保护方法是始终使用DateTimePicker等设置日期的格式,以使用长格式(YYYYMMDD HH:MM:SS)。有一个格式字符串告诉.Net这样做,但我现在记不起来了


如果您接受来自用户输入的字符串,则必须考虑CurrentCulture(上面的同一链接有帮助)。

好的,看起来我正在尝试传递一个字符串形式为“31/7/2009”的日期,该字符串已断开,但如果我传递的是“1/1/2009”,则会起作用,因此,我认为数据库中的内容和应用程序中的内容在文化上存在差异。我如何以相同的格式比较它们?????或者以某种文化不变的方式。。。