2010-12-01 124 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; 

請標記爲答案,如果這能解決你的問題。