我如何转换和整型为字符串?以下各项均不起作用:
from s in ctx.Services
where s.Code.ToString().StartsWith("1")
select s
from s in ctx.Services
where Convert.ToString(s.Code).StartsWith("1")
select s
from s in ctx.Services
where ((string)s.Code).ToString().StartsWith("1")
select s
编辑
我得到的错误是:LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression
*
9条答案
按热度按时间nnvyjq4y1#
在EF v4中,您可以使用SqlFunctions.StringConvert。所以你的代码会像这样结束:
编辑
正如Rick在他的评论中提到的,将int类型转换为double类型的原因(decimal可能也可以)是因为该函数没有int类型的重载。
vxf3dgd42#
Linq to Entities不支持将函数转换为服务器托管的SQL。
ToString(on anything)就是其中之一
下面是supported functions的列表
以前在堆栈溢出时,特别是asking how to convert an int to a string时,已经询问过此问题
laik7k3q3#
我也遇到过类似的问题
street.Suburb.邮政编码抛出'无法转换非primitive类型错误'作为其int?在以下shuggy的链接后,我修正了添加。AsEnumerable强制int?- 〉字符串转换'客户端' i。e. LINQ to Objects。即
ijxebb2r4#
当使用LINQ to Objects时,你可以使用ToString()帮助器。
2q5ifsrm5#
将IQueryable强制转换为IEnumerable,因为IQueryable继承IEnumerable。参见http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx-具体如下:'枚举导致执行与IQueryable对象关联的表达式树。我认为重要的是''执行表达式树'的定义是特定于查询提供程序的'。
IQueryable非常强大,但在此上下文中被误用。
z2acfund6#
我尝试了这个解决方案,它对我很有效:
希望这对你有帮助
5jdjgkvh7#
这里有一个方法来做到这一点。
r6vfmomb8#
xoshrz7s9#
我发现了SqlFunctions。StringConvert((double)c.年龄)对我也不起作用,该字段的类型为Nullable
在过去的几天里,我花了很多时间才找到这个。
我希望这对一些程序员有帮助。