Linq Contains() 不支持

Posted

技术标签:

【中文标题】Linq Contains() 不支持【英文标题】:Linq Contains() Not supported 【发布时间】:2013-03-15 15:54:20 【问题描述】:
(from a in GetCtx().Application
                     where identifiers.Contains(a.os + ":" + a.osIdentifier)
                     select a.id).ToList();

它给了我 NotSupportedException:

LINQ to Entities 无法识别方法 'System.String Format(System.String, System.Object, System.Object)' 方法和这个 方法不能翻译成商店表达式。

谁能告诉我如何解决这个问题?

【问题讨论】:

什么是identifiers 它是一个字符串。我将其格式化为具有这两个参数,例如“3:com.app.android 您使用的是 EF4 还是更新版本? 您确定这是正确的代码/错误消息吗?错误是抱怨 String.Format,而不是 Contains。 【参考方案1】:

如果您针对 SQL Server 使用 LINQ to Entities,您可以使用 SqlFunctions:

(from a in GetCtx().Application
 where identifiers.Contains(SqlFunctions.StringConvert((double)a.os) + ":" + a.osIdentifier)
 select a.id).ToList();

【讨论】:

以上是关于Linq Contains() 不支持的主要内容,如果未能解决你的问题,请参考以下文章

引起:java.lang.IllegalArgumentException: CONTAINING (1): [IsContaining, Containing, Contains]不支持redis查

LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”

“LINQ to Entities 不支持 LINQ 表达式节点类型 'Invoke'” - 难倒!

不支持 Linq-to-EF DateTime.ToLocalTime

JsonResult(object) 导致“不支持集合类型'Newtonsoft.Json.Linq.JToken'。”

对于不支持子查询的 NHibernate-to-LINQ 是不是有任何解决方法?