如何使用ToString()方法将整数转换为LINQ中的字符串

当我尝试在下面的LINQ Lambda表达式中使用ToString()时,我得到一个exception,说“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。 立即的帮助将受到高度赞赏。

我通过在C#中直接编写MySQl查询解决了这个问题,如下所示 –

 string queryTemplate = @"select inv.* from invoices as inv where userID = '123' and date like '%abc%'"; List totalSearch = context.ExecuteStoreQuery(queryTemplate).ToList(); 

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()。 您可以根据自己的需要进行调整。

在EF 4中,您可以使用SqlFunctions.StringConvert