我希望我的用户能够通过部分字符串搜索采购订单(这是INT的),我。如果一个采购订单是123456,输入456,结果是123456。
我以为这会奏效:
var pop = (from po in ctx.PurchaseOrders
let poid = po.PurchaseOrderID.ToString()
where poid.Contains(term)
select new SearchItem
{
id = poid,
label = po.SupplierID,
category = "purchaseorder"
}).ToList();
但我得到一个错误
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
如何将INT PurchaseOrderID转换为字符串,以便搜索它的片段?
谢谢
6条答案
按热度按时间qlfbtfca1#
使用这个:
更多信息:http://msdn.microsoft.com/en-us/library/dd487127.aspx
nbysray52#
为便于将来参考,已使用以下命令修复此问题:
是中间人名单让它起作用。
myss37ts3#
你得到这个错误是因为你的LINQ to SQL不能识别
ToString()
方法。如果你想将
int
转换为string
,并且你使用的是SQL Server和EF,那么可以这样使用函数SqlFunctions.StringConvert:或者,作为替代:
问题是我们不知道您使用EF的提供程序是什么。在SQL Server的情况下,这将工作,但如果提供程序不同,如MySQL,使用该表达式,应用程序将抛出一个异常,并显示以下消息:
指定的方法系统。String StringConvert对类型“System.Data.Objects.无法将“SqlClient.SqlFunctions”转换为LINQ to Entities存储表达式。
小心点!
如果您没有使用SQL Server作为提供程序,请在查询中使用显式强制转换,如@SimonBelanger所建议的:
z18hc3ub4#
我偶然发现了这个问题,并希望发布一个解决方案,将与实体框架和LINQ通过Lambda表达式的实体。
这是从这里的解决方案中借用的--〉https://stackoverflow.com/a/21234785/2395030
pgx2nnw85#
Linq不知道ToString()方法是什么,但是你可以定义你的自定义方法。如果你使用this link,你的问题就解决了。
qv7cva1a6#
试试这个