2016-09-07 10 views
0

ドキュメントに格納されている変数(InputAssetId)の値を文字列として取得したいと思います.Queryを書きました.QueryExplorerで正常に動作します。代わりに、変数に格納された値のDocumentDB SQLクエリはクエリエクスプローラでは動作しますが、C#コードでは機能しません

this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey); 
IQueryable<asset> id = this.client.CreateDocumentQuery<asset>(
       UriFactory.CreateDocumentCollectionUri(DatabaseName,CollectionName), 
       "SELECT c.InputAssetId FROM c WHERE c.BlobNameDb='BigBuckBunny.mp4' "); 
Console.WriteLine(id.string()); 

、私はコンソールで得たものは誰もが私に解決策を与えてくださいすることができ

{"query":"SELECT c.InputAssetId FROM c WHERE c.BlobNameDb='BigBuckBunny.mp4' "} 

の下に与えられていますか?

+0

問題が何ですか。それは私にとって有効なSQLクエリのように見えます。 –

+0

「資産」とは何ですか?ところで、IDだけを選択した場合、 'IQueryable 'を得るべきではありませんか? –

+0

@ShannonHolsinger私はコンソールの "InputAssetId"の値を出力したいのですが、私がコンソールに持っているものは質問で与えられています。これは問題です。 –

答えて

0

よく私はまだすべてのAPIをよく知っていませんが、私はLinqとC#を使用します。 `。

あなたは、多かれ少なかれ、そのようにそれを書く必要があります。

FeedOptions queryOptions = new FeedOptions { MaxItemCount = 1 }; 

IQueryable<Asset> assetQuery = client.CreateDocumentQuery<Asset>(UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName), 

queryOptions) .Where(O => o.BlobNameDb == "BigBuckBunny.mp4");私はあなたがSQLクエリを使用したいdocumentationで読むことができるものから、

string id = assetQuery.First().InputAssetId ; 

、あなたはSqlQuerySpecとしてそれを渡す必要がありそうあなたのコードは、(ただしソリューションをテストしていない)になる可能性:

IQueryable<string> assetQuery = client.CreateDocumentQuery<Asset>(
      UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName), 
      new SqlQuerySpec("SELECT c.InputAssetId FROM c WHERE c.BlobNameDb='BigBuckBunny.mp4'"), 
      queryOptions) 
string id = assetQuery.First(); 
1

問題は、作成したクエリを実際に実行していないことです。 - それは実際にあたりどのように多くの項目を意味

this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey); 
var query = this.client.CreateDocumentQuery<asset>(
     ... your LiNQ or SQL query... 
    .AsDocumentQuery(); 

var result = await query.ExecuteNextAsync<string>(); 
Console.WriteLine(result.ToList().FirstOrDefault()); 

あなたは後者がひどく命名されたとして、クエリ(とないFeedOptions.MaxItemCount = 1でTOP 1を使用することもできます。正しいコードは、これらの線に沿って何かだろう最小のMaxItemCountを使用すると無駄なクエリが多数発生する可能性があります)。

関連する問題