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

时间:2010-11-25 09:51:23

标签: c# mysql linq entity-framework entity

当我尝试在下面的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。立即的帮助将受到高度赞赏。

3 个答案:

答案 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