我需要编写Linq查询来连接两个表,这两个表的相关字段类型不同,一个是字符串(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 将 sqlfunction.stringFormat
翻译为 str('')
而不是 convert(nvarchar,'')
。
我如何将其转换为 nvarchar?
SELECT CASE WHEN N'b' = CAST('b' AS char) THEN 1 ELSE 0 END
(输出:1)。这一定是其他问题。也许您应该展示一些样本数据(包括“BaseRef”和“DocEntry”)。 - Gert Arnold