2010-12-01 7 views
1

フィールドが文字列配列内に存在するSQLCEテーブルからアイテムを選択しようとしています。これはSQLで簡単です。エンティティフレームワークにSQLCEでの句が含まれています

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; 

誰にでもアイデアやアドバイスがあれば教えてください。

ありがとうございます!

更新:

以下、下記reccomended、クラスXは、列挙を呼び出すクラスであるエラーメッセージと非サポート例外をスロー:タイプの定数値を作成できません「NamespaceX.ClassX」 。このコンテキストでは、プリミティブ型( 'Int32、String、およびGuid'など)のみがサポートされています

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

以下の回答は機能しませんでしたか?それは私のためにやった。 –

+1

この記事をチェック:http://blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx – ITmeze

答えて

1

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

を試してみてください、これはあなたの問題を解決するかどうかの答えとしてマークしてください。

+0

解決しなかった...上の更新を参照 – bunglestink

+0

.Any()の代わりに.Contains() – JCallico

関連する問題