Linq int转换为string

我如何投入和int到一个string? 以下都不行:

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

Linq to Entities不支持将函数转换为服务器托pipe的sql。

ToString(任何东西)就是其中之一

这是支持的function列表

这已经被问到之前堆栈溢出具体问如何将int转换为string

使用EF v4,您可以使用SqlFunctions.StringConvert 。 所以你的代码会看起来像这样:

 from s in ctx.Services where SqlFunctions.StringConvert((double)s.Code).StartsWith("1") select s 

编辑

正如Rick在他的评论中提到的那样,将int转换为double的原因(小数可能也适用)是因为函数没有int重载。

我有一个类似的问题

  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被抛出'不能转换非主要types错误'作为它的一个int? 以下shuggy的链接我通过添加.AsEnumerable来强制int? – >string转换'客户端'即LINQ到对象。 即

 var list = query.AsEnumerable().Select(street => new { street.StreetId, Name = street.Name + " " + street.Suburb.Name + " " + street.Suburb.State.Name + " " + street.Suburb.Postcode }); 

当使用LINQ to Objects时,你可以使用ToString()助手。

将IQueryable强制转换为IEnumerable,因为IQueryableinheritanceIEnumerable。 请参阅http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx – 特别是:“枚举导致与IQueryable对象关联的expression式树被执行。 我认为重要的是“执行expression式树的定义”是查询提供者特有的。

IQueryable非常强大,但在这种情况下被滥用。

我试过这个解决方法,它为我工作:

 from s in ctx.Services where (s.Code + "").StartsWith("1") select s 

希望这可以帮助

这是一个办法。

 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 ); 
 from s in ctx.Services.ToList() where s.Code.ToString().StartsWith("1") select s 
 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)不适用于我的字段是Nullabletypes

在试用和错误的最后几天,我花了很多search来find这个。

我希望这可以帮助几个编码器。