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