2017-12-28 48 views
0

azure cosmos dbのクエリを作成するときにIN式で使用できるように、SqlQuerySpecのパラメータとして配列を渡します。私は何をしようとしている は何か、我々は定期的に行うように(文字列、などint型)のparamsです:cosmos DBクエリ用のSQLクエリパラメータとして配列を渡すにはどうすればいいですか

private SqlQuerySpec BuildQuery(IEnumerable<string> exclTypes) 
{ 
    var queryText = "SELECT * FROM root r WHERE r.Type NOT IN (@types)"; 
    var parameters = new SqlParameterCollection{new SqlParameter("@types", exclTypes.ToArray())}; 
    return new SqlQuerySpec() 
    {QueryText = queryText, Parameters = parameters}; 
} 

をしかし、それは、このような方法では動作しません。私はparamとして配列を渡すことができます他の方法は?おかげさまで

答えて

0

このtistoを実行する最も簡単な方法は、テーブル値のパラメータを設定します。あなたの配列はTVPとして渡され、それがテーブルなのでIN述部の一部として使用できます。それに関するオンラインの資料がたくさんあります。

SELECT * FROM root r WHERE ARRAY_CONTAINS(@types, r.Type) <> true 

、あなたが配列として@typesを渡し、その配列は、あなたの文書にプロパティr.Typeで持っている値が含まれているかどうかを確認することができます

+0

おかげではなく、私はuが話して何を理解してください。私はコスモスのテーブルストレージを使用していませんが、代わりにストレージをドキュメント化しています。小さな例を書いたり、チュートリアルへのリンクを教えてください。私はそれを見つけることができますか? –