当我尝试使用动态 linq(来自此链接)执行此 ESQL(将 int 转换为字符串)时
queryable.Where("CAST(PositionID AS Edm.String).Contains(@0)", paramsObj); //PositionID is Int32
它抛出异常
')' or ',' expected
我的实体框架版本是 4.0。知道如何解决这个问题吗?
提前致谢,
布赖恩
当我尝试使用动态 linq(来自此链接)执行此 ESQL(将 int 转换为字符串)时
queryable.Where("CAST(PositionID AS Edm.String).Contains(@0)", paramsObj); //PositionID is Int32
它抛出异常
')' or ',' expected
我的实体框架版本是 4.0。知道如何解决这个问题吗?
提前致谢,
布赖恩
你不能使用as
内部函数调用,尝试像这样更改你的代码
queryable.Where("(PositionID.ToString().Contains(@0))", paramsObj); //PositionID is Int32
更新:
在您的情况下,很可能必须使用 db 中的自定义函数
更新 2:
我认为您不能将 esql 与动态 LINQ 一起使用,因为它通过自身规则解析字符串条件,因此动态 LINQ 的语法 edsl 可能是错误的,也不是所有 SQL 构造都在 LINQ to Entities 中实现,所以如果你想使用like operator
您必须使用Contains, StartsWith, EndsWith
仅适用于字符串的函数
所以为了解决这个问题,您可以使用存储过程和函数、eSQL 命令或原始 sql