簡體   English   中英

將工作 CosmosDB 查詢轉換為 C# 代碼時出錯

[英]Error when converting working CosmosDB Query to C# code

我有一個簡單的 CosmosDB 查詢,其工作方式如下

SELECT c.variantId
FROM c IN jongel.BasicData.base.sales.variants
WHERE ARRAY_CONTAINS(c.globalTradeItemNumber.globalTradeItemNumberType, {"GTIN":"05662570363012"}, true)

返回預期值。

然后我把它放到我的 C# 代碼中,如下所示

FeedIterator setIterator = itemContainer.GetItemQueryStreamIterator(
               $"SELECT c.variantId " +
               $"FROM c IN jongel.BasicData.base.sales.variants " +
               $"WHERE ARRAY_CONTAINS(c.globalTradeItemNumber.globalTradeItemNumberType, {{\"GTIN\":\"{barCode}\"}}, true)",
               requestOptions: new QueryRequestOptions()
               {
                   PartitionKey = new PartitionKey("XXX"),
                   MaxConcurrency = 1,
                   MaxItemCount = 1
               });

但這不會返回任何結果,所以我假設我在轉義 {} 和 " 的字符串時做錯了什么,但我無法弄清楚我做錯了什么。

如何正確轉換查詢?

我有一個類似的問題,我通過使用單引號而不是雙引號來解決它。 下面是我在存儲庫類中完美運行的方法之一。

public async Task<IEnumerable<Fixture>> GetUnorderedSeasonFixtures(PartitionKey partitionKey)
        {
            FeedIterator feedIterator = this.Container.GetItemQueryStreamIterator(
                $"select * from c where c.streamId = '{partitionKey.ToString()}'",
                null, new QueryRequestOptions() { PartitionKey = partitionKey});

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM