ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – DocumentDB STARTSWITH无法使用.NET

2019-07-06 09:07:38  阅读:171  来源: 互联网

标签:c net azure azure-cosmosdb


我有一个名为Customer的集合,每个条目都有一个名为Number的属性.以下是select all命令的内容:

[
    { 
        "Number": "K1",
        "Label": "Test1"        
    },
    { 
        "Number": "T1",
        "Label": "Test2"        
    }
]

我使用Azure门户针对此集合触发以下查询:

SELECT * FROM c WHERE STARTSWITH(c.Number, 'K')

这给了我正确的结果:

[
    { 
        "Number": "K1",
        "Label": "Test1"        
    }
]

但是当我使用DocumentDB NuGet包在C#中执行此操作时:

var options = new FeedOptions();
var query = "SELECT * FROM c WHERE STARTSWITH(c.Number, 'K')";
var items = client.CreateDocumentQuery<Customer>(uri, options, query).ToList()

然后它每次都会检索所有(在这种情况下为2)项目.

似乎CreateDocumentQuery完全忽略了这个语句.

编辑

查询的ActivityId是7f473650-f125-4b6b-9d4c-2d520deceebd.

解决方法:

看看CreateDocumentQuery的定义,它的参数是uri,query,options …,如果你放置选项而不是查询,它将默认查询为null,所以你只得到集合中的所有项目.

public IQueryable<T> CreateDocumentQuery<T>(Uri documentCollectionOrDatabaseUri, SqlQuerySpec querySpec, FeedOptions feedOptions = null, object partitionKey = null);

将其更改为:

var items = client.CreateDocumentQuery<Customer>(uri, query, options).ToList()

标签:c,net,azure,azure-cosmosdb
来源: https://codeday.me/bug/20190706/1395705.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有