【问题标题】:Dynamic LINQ Cast issue动态 LINQ Cast 问题
【发布时间】:2013-10-25 00:01:22
【问题描述】:

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

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

抛出异常

')' or ',' expected

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

提前致谢,

布赖恩

【问题讨论】:

  • 你有解决办法吗?

标签: c#-4.0 entity-framework-4 casting dynamic-linq


【解决方案1】:

你不能在函数调用中使用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

【讨论】:

  • 不起作用,在 linq to entity 中不支持 ToString
  • @brian,你能提供更多的代码和错误信息吗?
  • "LINQ to Entities 无法识别方法 'System.String ToString()' 方法,并且该方法无法转换为存储表达式。"
猜你喜欢
  • 1970-01-01
  • 2015-10-04
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
相关资源
最近更新 更多