我正在使用带有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”);
他们都失败了。
感谢任何帮助
更新:
错误信息:
无法找到“日期”类型。确保加载了所需的模式并正确导入名称空间。
where查询
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 ";
}
答案 0 :(得分: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 ";
}