2010-12-01 111 views
1

我想从SQLCE表中选择项目,其中字段存在于字符串数组中。这在SQL中很容易使用:实体框架包含/子句与SQLCE

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

我很难将它转换为LINQ。以下将逻辑工作,但它收到此错误:LINQ to Entities不识别该方法'布尔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; 

请让我知道,如果任何人有任何想法或建议。

谢谢!

更新:

以下,下面reccomended,引发NotSupportedException,与错误信息,其中类X是类调用枚举:无法创建类型的恒定值“NamespaceX.ClassX” 。在此上下文中仅支持基本类型(如Int32,String和Guid)

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

下面的答案不起作用?它为我做了。 – 2011-12-01 15:01:53

+1

选中此篇文章:http://blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx – ITmeze 2012-05-10 16:24:59

回答

1

尝试

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

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