实体框架包含/包含 SQLCE 子句

Posted

技术标签:

【中文标题】实体框架包含/包含 SQLCE 子句【英文标题】:Entity Framework Contains/In Clause with SQLCE 【发布时间】:2010-12-01 14:40:17 【问题描述】:

我正在尝试从 SQLCE 表中选择项目,其中字段存在于字符串数组中。这在 SQL 中很容易:

SELECT * 
FROM TableX
WHERE SomeField In
([comma delimited array values]);

我很难将其转换为 LINQ。以下内容在逻辑上可行,但收到​​此错误:LINQ to Entities 无法识别方法 'Boolean Contains[String](System.Collections.Generic.IEnumerable`1[System.String], System.String) ' 方法,并且该方法不能翻译成商店表达式。

var result = from c in DB.TableX
             where someStringArray.Contains(c.SomeField)
             select c;

如果有人有任何想法或建议,请告诉我。

谢谢!

更新:

下面推荐的以下内容会引发 NotSupportedException,并带有错误消息,其中类 X 是调用枚举的类:无法创建类型为“NamespaceX.ClassX”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)

var result = from c in DB.TableX
             where someStringArray.Any(s => s == c.SomeField)
             select c;

【问题讨论】:

下面的答案不起作用?它对我有用。 查看这篇文章:blogs.msdn.com/b/alexj/archive/2009/03/26/… 【参考方案1】:

试试

var result = from c in DB.TableX
             where someStringArray.Any(s => s == c.SomeField)
             select c;

如果这解决了您的问题,请标记为答案。

【讨论】:

使用 .Contains() 而不是 .Any()

以上是关于实体框架包含/包含 SQLCE 子句的主要内容,如果未能解决你的问题,请参考以下文章

将实体框架与 SQLCE 一起使用时出现奇怪的异常

select子句

实体框架 where 子句从特定列过滤

LINQ 查询子句的顺序是不是会影响实体框架的性能?

在实体框架中使用动态 where 子句

多对多实体上的 JPA WHERE 子句