Linq int to string

16 浏览
0 Comments

Linq int to string

如何将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不识别'System.String ToString()'方法,并且无法将此方法转换为存储表达式

0
0 Comments

Linq int to string问题的出现原因是在代码中使用了int?类型的字段进行字符串拼接,导致出现了无法转换的错误。解决方法是通过添加.AsEnumerable()将查询结果转换为LINQ to Objects,从而强制进行int?到string的转换。

在给定的代码中,查询语句中的street.Suburb.Postcode是一个int?类型的字段,而在进行字符串拼接时,需要将其转换为string类型。然而,LINQ to SQL不支持直接将int?类型转换为string类型,因此在代码中会出现无法转换的错误。

为了解决这个问题,我们可以使用.AsEnumerable()方法将查询结果转换为LINQ to Objects。这样,查询语句就会在客户端进行执行,而不是在数据库服务器上执行。在客户端执行查询时,int?类型的字段可以直接转换为string类型,从而避免了无法转换的错误。

具体来说,在给定的代码中,可以将查询语句修改为:

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

通过添加.AsEnumerable(),我们将查询结果转换为LINQ to Objects,并在客户端执行查询。这样就可以在进行字符串拼接时,将int?类型的字段转换为string类型,避免了无法转换的错误。

需要注意的是,使用.AsEnumerable()将查询结果转换为LINQ to Objects后,查询将在客户端执行,而不是在数据库服务器上执行。这意味着整个数据库表的数据将加载到内存中。因此,在处理大量数据时,使用.AsEnumerable()需要谨慎,以避免内存溢出的问题。

总结起来,Linq int to string问题的出现是因为在代码中使用了int?类型的字段进行字符串拼接,无法直接转换为string类型。通过添加.AsEnumerable()将查询结果转换为LINQ to Objects,可以在客户端执行查询,将int?类型的字段转换为string类型,从而解决了无法转换的错误。但需要注意在处理大量数据时,使用.AsEnumerable()可能导致内存溢出的问题。

0
0 Comments

Linq to Entities不支持将许多转换函数转换为服务器托管的SQL。

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

这是支持的函数列表

这个问题在Stack Overflow上被问过,特别是关于如何将int转换为string的问题

你提供的第一个链接已经失效了。

问题的原因是Linq to Entities不支持将int类型转换为string类型的操作。在Linq to Entities中,只有一部分函数可以被转换为服务器托管的SQL。其中,ToString函数是不支持的。这导致在使用Linq to Entities进行查询时,无法直接将int类型转换为string类型。

解决方法是使用其他支持的函数来完成int类型到string类型的转换。可以通过使用SqlFunctions.StringConvert函数来实现这一转换。具体的代码如下所示:

var query = from entity in dbContext.Entities

select new

{

Id = entity.Id,

StringId = SqlFunctions.StringConvert((double)entity.Id)

};

在这个示例中,我们使用了SqlFunctions.StringConvert函数来将entity.Id从int类型转换为string类型。通过将entity.Id强制转换为double类型,我们可以使用StringConvert函数将其转换为string类型。这样,我们就可以在Linq to Entities查询中将int类型转换为string类型了。

总结一下,Linq to Entities不支持将int类型直接转换为string类型的操作。要解决这个问题,我们可以使用SqlFunctions.StringConvert函数来完成int类型到string类型的转换。

0
0 Comments

Linq int to string问题的出现是因为在EF v4中,SqlFunctions.StringConvert函数没有int类型的重载。为了解决这个问题,可以将int类型先转换为double类型,然后再调用StringConvert函数。

具体的解决方法如下:

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

这个解决方法已经在实践中被验证有效。需要注意的是,由于EF会在数字前面添加空格,所以在调用StartsWith函数之前需要先调用Trim函数来去除空格。

有用户提到,这个解决方法比之前的解决方法更好。建议将这个解决方法设为问题的答案。

Linq int to string问题的解决方法是将int类型先转换为double类型,然后再调用StringConvert函数。这个解决方法已经在实践中被验证有效,并且更好地解决了之前的问题。

0