1

当我尝试使用动态 linq(来自此链接)执行此 ESQL(将 int 转换为字符串)时

queryable.Where("CAST(PositionID AS Edm.String).Contains(@0)", paramsObj); //PositionID is Int32

它抛出异常

')' or ',' expected

我的实体框架版本是 4.0。知道如何解决这个问题吗?

提前致谢,

布赖恩

4

1 回答 1

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

于 2013-11-05T12:45:09.270 回答