我正在尝试将SQLClient用于实体框架函数,但是我遇到了一些问题。我需要将ID
(在数据库中是一个int
(转换为nvarchar
,以便我可以使用通配符进行比较。
这在一定程度上有效(即它构建和执行时没有错误(,但是这不是我作为数据库端需要做的,它返回错误的结果。事实上,它返回 0 行,而它应该返回一个数字。
return "SqlServer.STR(ID) LIKE '824%'";
上面的行基本上可以转换为SQL中的以下行
SELECT COUNT(*) FROM Table1 WHERE STR(ID) LIKE '824%'
我在SQL中需要的是以下行(或类似的东西(,因为这返回正确的行数。
SELECT COUNT(*) FROM Table1 WHERE CONVERT(NVARCHAR(50), ID) LIKE '824%'
我试过使用:
return "CAST(ID AS NVARCHAR(50)) LIKE '824%'";
但这在运行时会给出以下错误:
找不到类型"NVARCHAR"。确保所需的 已加载架构并正确导入命名空间。
谁能告诉我如何使用 SqlClient 字符串函数或其他变体来做到这一点?
谢谢大家。
SqlFunction.StringConvert(( 函数。int 没有重载,所以你必须键入 cast
var test = dataContext.Table1
.Where(f => SqlFunctions.StringConvert((double) f.Id)
.Trim()
.StartsWith("824"))
.Select(f => SqlFunctions.StringConvert((double) f.Id)
.Trim())
.ToList();
这将转换为
SELECT
LTRIM(RTRIM(STR( CAST( [Extent1].[Id] AS float)))) AS [C1]
FROM [dbo].[Table1] AS [Extent1]
WHERE (LTRIM(RTRIM(STR( CAST( [Extent1].[Id] AS float)))) LIKE N'4%')