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这个。
我希望这可以帮助几个编码器。