2017-04-19 6 views
0

DocumentDbからIDで約50〜100個のドキュメントを取得したいとします。 List<string>にIDのリストがあります。 LINQ to SQLを使用してこれらのドキュメントを取得するにはどうすればよいですか。私はハードコードにしたくないので、クエリを作成するには、ラムダ式を使用することができるようにしたいAzure DocumentDbでは、LINQ to SQLを使用して "IN"ステートメントを作成するには

IQueryable<Family> results = client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM family WHERE State IN ('TX', 'NY')", DefaultOptions); 

:私はのように、文字列として実際のSQLクエリを記述する必要はありませんフィールドの名前を文字列として返します。

答えて

3

クエリ文字列SELECT * FROM family WHERE State IN ('TX', 'NY')を生成してクエリドキュメントに渡したくないと思われる場合は、次のコードを試してみてください。

List<string> ids = new List<string>() { "TX", "NY" }; 

client.CreateDocumentQuery<Family>(collectionUri).Where(d => ids.Contains(d.id)); 
+0

返信はあなたが問題を解決するのに役立ちますか? –

+0

助けてくれてありがとう。これは私に正しい結果をもたらします。しかし**注**は間違っているようです。これは実際にサーバー側のフィルタリングであり、メモリ内(クライアント側)のフィルタリングではありません。生成されたSQL照会にはINステートメントがあり、サーバー上で実行されます。 'client.CreateDocumentQuery'は' IEnumerable'(インメモリ)ではなく 'IQueryable'を返します。 – Ben

+0

私はもう一度それをチェックしました、それは確かにサーバーにクエリを渡します。 –

関連する問題