我需要在查询中将String转换为Int32值。它必须在sql server端完成,而不是在内存中
我已经在Model First方法LINQ to Entities中看到了如何做到这一点的答案。
here和here
但我需要使用Code First来完成它。
我将查询写入DbSet<>。
有没有办法做到这一点?请帮助:)
答案 0 :(得分:1)
新答案: 我可以找到信息的唯一方法是使用自定义查询。 例如:
from user in Users.SqlQuery("SELECT Id, CAST(Age AS INT) as Age, FirstName, LastName FROM Users")
select new
{
id = user.Id,
Age = user.Age
}
在我的测试中,即使您选择了不包含每个属性的自定义对象,似乎您映射到的实体上的属性的每个值都必须包含在选择中。在上面的示例中,我包括FirstName和LastName,即使它们未在select中使用。
旧答案: 关于在sql端转换为字符串: 如果先将int转换为double或decimal,则可以使用SqlFunctions.StringConvert Problem with converting int to string in Linq to entities
from user in Users
select new
{
IdAsText = SqlClient.SqlFunctions.StringConvert((decimal)user.Id)
}
转换为float或decimal是必要的,因为sql-server上的STR函数需要一个浮点数:Why is there no int overload for SqlFunctions.StringConvert
更新
在LINQPad中,上面生成的SQL查询出现在:
SELECT
[Extent1].[Id] AS [Id],
STR( CAST( [Extent1].[Id] AS decimal(19,0))) AS [C1]
FROM [dbo].[Users] AS [Extent1]