3
我必须写两个表之间的SQL Server的linq,相关的字段是在不同的类型。一个是字符串(nvarchar),另一个是int。LINQ to实体sqlFunction.string转换返回varchar而不是nvarchar
这里是我的LINQ:
from je in a
join vP in b
on je.BaseRef equals SqlFunctions.StringConvert((decimal) vP.DocEntry)
SQL中的LINQ的结果是:
SELECT
[Extent1].[Account] AS [Account]
FROM [dbo].[a] AS [Extent1]
JOIN [dbo].[b] AS [Extent2] ON ([Extent1].[BaseRef] = (STR(CAST([Extent2].[DocEntry] AS float)))) OR (([Extent1].[BaseRef] IS NULL) AND (STR(CAST([Extent2].[DocEntry] AS float)) IS NULL))
该查询返回NULL,因为SQL无法比拟的varchar和nvarchar。 linq to entity translate sqlfunction.stringFormat
to str('')
而不是convert(nvarchar,'')
。 我该如何转换为nvarchar?
您好,感谢您的回复。我试过了,但它返回了varchar。 –
你确定吗?我用'SQL_VARIANT_PROPERTY(STR(CAST(CAST(xxx AS float))+ N'','BaseType')'检查了一个类似的查询,它是'nvarchar'。但是你确定'char'和' nvarchar'是问题吗?他们应该比较一致。 –
请看我编辑的答案。 –