如何将int和int转换为字符串?以下都不起作用:
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
答案 0 :(得分:55)
使用EF v4,您可以使用SqlFunctions.StringConvert。所以你的代码看起来像这样:
from s in ctx.Services
where SqlFunctions.StringConvert((double)s.Code).StartsWith("1")
select s
修改强>
正如Rick在他的评论中提到的,将int转换为double(十进制可能也有效)的原因是该函数没有int的重载。
答案 1 :(得分:33)
Linq to Entities不支持尽可能多的函数转换为服务器托管的sql。
ToString(在任何事物上)就是其中之一
的列表之前已经有人问过堆栈溢出asking how to convert an int to a string
答案 2 :(得分:2)
我有类似的问题
IQueryable<Street> query = db.Streets.AsQueryable();
query = query.Where(street => street.Name.ToLower().StartsWith(keyword))
.Take(10)
.OrderBy(street => street.Name);
var list = query.Select(street => new
{
street.StreetId,
Name = street.Name + " " + street.Suburb.Name + " " + street.Suburb.State.Name + " " + street.Suburb.Postcode
});
street.Suburb.Postcode投掷'无法转换非原型错误'作为其int?在遵循shuggy的链接之后,我通过添加.AsEnumerable来强制执行int? - &GT;字符串转换'客户端'即LINQ to Objects。即
var list = query.AsEnumerable().Select(street => new
{
street.StreetId,
Name = street.Name + " " + street.Suburb.Name + " " + street.Suburb.State.Name + " " + street.Suburb.Postcode
});
答案 3 :(得分:2)
使用LINQ to Objects时,可以使用ToString()帮助程序。
答案 4 :(得分:1)
将IQueryable强制转换为IEnumerable,因为IQueryable继承了IEnumerable。请参阅http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx - 具体来说:'枚举导致与IQueryable对象关联的表达式树被执行。我认为重要的是'执行表达式树的定义“特定于查询提供者'。
IQueryable非常强大但在这种情况下被滥用。
答案 5 :(得分:1)
我尝试了这种解决方法,它对我有用:
from s in ctx.Services
where (s.Code + "").StartsWith("1")
select s
希望这有帮助
答案 6 :(得分:-1)
这是一种方法。
int[] x = new int[] {11,3,15,7,19};
var j = from s in x where s.ToString().StartsWith( "1") select s.ToString();
Console.WriteLine( j );
答案 7 :(得分:-1)
from s in ctx.Services.ToList()
where s.Code.ToString().StartsWith("1")
select s
答案 8 :(得分:-1)
var items = from c in contacts
select new ListItem
{
Value = String.Concat(c.ContactId), //This Works in Linq to Entities!
Text = c.Name
};
我发现SqlFunctions.StringConvert((double)c.Age)对我来说不适用于该字段的类型为Nullable
在试错的最后几天里,我找了很多搜索来找到这个。
我希望这能帮助一些编码员。