当我尝试在下面的LINQ Lambda表达式中使用ToString()时,我得到一个异常,说“LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达。“
query = query.Where(q => q.date.ToString().Contains(filtertext)
|| q.invoicenum.ToString().Contains(filtertext)
|| q.trans_type.ToString().Contains(filtertext)
|| q.charge.Contains(filtertext));
我正在使用Linq来引诱。使用的数据库是MySQL而不是SQL Server。立即的帮助将受到高度赞赏。
答案 0 :(得分:5)
我通过在C#中直接编写MySQl查询解决了这个问题,如下所示 -
string queryTemplate =
@"select inv.* from invoices as inv where userID = '123' and date like '%abc%'";
List<invoice> totalSearch =
context.ExecuteStoreQuery<invoice>(queryTemplate).ToList();
答案 1 :(得分:4)
Harshal,问题是SqlFunctions.StringConvert适用于MS SQL,而不适用于MySQL。您可以尝试将结果转换为Enumerable,然后对其进行查询。例如:
using (DatabaseEntities db = new DatabaseEntities())
{
var list = from l in db.Customers.AsEnumerable()
orderby l.CompanyName
select new SelectListItem { Value = l.CustomerID.ToString(), Text = l.CompanyName };
return list.ToList();
}
注意这一行:
l在db.Customers.AsEnumerable()
中
将结果转换为Enumerable,然后就可以使用.toString()了。您可以根据自己的需要进行调整。
答案 2 :(得分:1)
在EF 4中,您可以使用SqlFunctions.StringConvert