C# 实体框架上的动态Where条件对于带有强制转换的Datetime失败

C# 实体框架上的动态Where条件对于带有强制转换的Datetime失败,c#,entity-framework-4,C#,Entity Framework 4,我使用实体框架4.0中的动态where子句来过滤结果 像 及 其中(“SqlServer.CAST(it.CreatedAt as Date)=@p0”) 他们都失败了 谢谢你的帮助 更新: 错误信息: 找不到类型“日期”。确保加载了所需的架构,并且正确导入了名称空间。 以及查询的位置 it.IsDeleted = true and ( it.OrganizationName ='05 sep 2012' OR Cast( it.CreatedAt as Date ) =@p4 OR

我使用实体框架4.0中的动态where子句来过滤结果

及 其中(“SqlServer.CAST(it.CreatedAt as Date)=@p0”)

他们都失败了

谢谢你的帮助

更新:

错误信息:

找不到类型“日期”。确保加载了所需的架构,并且正确导入了名称空间。

以及查询的位置

 it.IsDeleted = true  and (  it.OrganizationName ='05 sep 2012' OR  Cast( it.CreatedAt as Date )  =@p4 OR  1=0 ) 
已提供对象参数

当前传递的值为“9/5/2012 12:00:00 AM” 比如:

string temp = SearchedQuery.Trim();
 DateTime res;
 if (DateTime.TryParse(temp, out res))
{
 query += ((" Cast( it." + field.Name +  " as Date )  =@p" + i + ""));

 ObjectParameter pr = new ObjectParameter("p" + i, res);

 param.Add(pr);

 query += " OR ";
}

这对我有用。这并不是完美的,但在我想要的情况下,这是有效的。我们还可以更清洁它

 string temp = SearchedQuery.Trim();
 DateTime res;
 if (DateTime.TryParse(temp, out res))
 {
 query += ((" ( it." + field.Name + " >@p" + i + ""));

 query += " AND ";

 ObjectParameter pr = new ObjectParameter("p" + i, res);

 i++;

 query += ((" it." + field.Name + " <@p" + i + " ) "));

 ObjectParameter pr1 = new ObjectParameter("p" + i, res.AddDays(1));

 param.Add(pr);
 param.Add(pr1);


 query += " OR ";
}
string temp=SearchedQuery.Trim();
日期时间;
if(DateTime.TryParse(temp,out res))
{
query+=((“(it.+field.Name+”>@p“+i+”);
查询+=“和”;
ObjectParameter pr=新的ObjectParameter(“p”+i,res);
i++;

query+=((“it.+field.Name+”p0是什么?如果是datetime,则是,此处条件将失败。日期!=日期时间。@Arran ObjectParameter pr=new ObjectParameter(@p0”+i,datetime.Now);它是一个对象参数。错误似乎是Cast无效。因为Cast是sql server的。我不知道该如何处理在这种情况下没有eaxmples。是的,它是一个日期时间。日期永远不会等于任何日期时间。您要么需要将其转换为日期时间,要么将其设置为日期时间(
DateTime.Today
)@Arran请看我更新的代码。我想我的问题还不够清楚
string temp = SearchedQuery.Trim();
 DateTime res;
 if (DateTime.TryParse(temp, out res))
{
 query += ((" Cast( it." + field.Name +  " as Date )  =@p" + i + ""));

 ObjectParameter pr = new ObjectParameter("p" + i, res);

 param.Add(pr);

 query += " OR ";
}
 string temp = SearchedQuery.Trim();
 DateTime res;
 if (DateTime.TryParse(temp, out res))
 {
 query += ((" ( it." + field.Name + " >@p" + i + ""));

 query += " AND ";

 ObjectParameter pr = new ObjectParameter("p" + i, res);

 i++;

 query += ((" it." + field.Name + " <@p" + i + " ) "));

 ObjectParameter pr1 = new ObjectParameter("p" + i, res.AddDays(1));

 param.Add(pr);
 param.Add(pr1);


 query += " OR ";
}