1

我正在使用带有 Entity Framework 4.0 的动态 where 子句来过滤结果。

ObjectQuery<T> tmp =  _context.MyTable.where("it.CreatedAt = @p0");

@p0 是一个对象参数

这工作得很好。

但问题是我想要类似的东西:

where("CAST(it.CreatedAt as Date) = @p0");

而 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 ";
}
4

1 回答 1

0

这对我有用。这并不完美,但在我想要的某些情况下有效。我们也可以多打扫

 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 ";
}
于 2012-10-23T06:59:15.733 回答