实体框架将DateTime转换为字符串

时间:2012-01-24 06:36:03

标签: c# linq entity-framework

leaves = leaves.Where(s => s.Employee.Name.ToUpper().Contains(searchString.ToUpper())
                                   || s.StartDate.ToString().Contains(searchString));     

这将导致错误..请帮助我,

错误:LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式..

2 个答案:

答案 0 :(得分:3)

区别对待每个案例

DateTime dateValue;

if (DateTime.TryParse(searchString, out dateValue))
{
    leaves = leaves.Where(l => l.StartDate == dateValue);
}
else
{
    leaves = leaves.Where(s => s.Employee.Name.ToUpper().Contains(searchString.ToUpper()));
}

答案 1 :(得分:1)

错误消息确切地说明了发生了什么:实体框架无法将表达式的那部分转换为SQL语句,这意味着您无法以这种方式进行搜索。

如果没有更多上下文,您最好的选择可能是按实际日期搜索(即搜索自特定日期以来或直到特定日期)。