C# AWS DynamoDB:查询在控制台上工作,但在.NET代码上不工作

C# AWS DynamoDB:查询在控制台上工作,但在.NET代码上不工作,c#,amazon-web-services,amazon-dynamodb,dynamodb-queries,C#,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,我有一个DynamoDB查询,它在AWS控制台上运行良好,但在代码上却没有 以下是我在控制台上的查询: 下面是我查询它的c#代码: var query = new QueryOperationConfig { KeyExpression = new Expression { ExpressionStatement = "#pkey = :v_pkey and #ske

我有一个DynamoDB查询,它在AWS控制台上运行良好,但在代码上却没有

以下是我在控制台上的查询:

下面是我查询它的c#代码:

var query = new QueryOperationConfig
            {
                KeyExpression = new Expression
                {
                    ExpressionStatement = "#pkey = :v_pkey and #skey >= :v_skey",
                    ExpressionAttributeNames = {
                        { "#pkey", "MailingId" },
                        { "#skey", "RegistroCarteiraId" },
                    },
                    ExpressionAttributeValues = new Dictionary<string, DynamoDBEntry>()
                    {
                        { ":v_pkey", new Primitive("62", true) },
                        { ":v_skey", new Primitive("00e0bbfc-aed0-4f0e-acef-a3623a9f9694") },
                    },
                },
                BackwardSearch = false,
                ConsistentRead = true,
                Limit = 1,
                FilterExpression = new Expression
                {
                    ExpressionStatement = "#psituacao = :v_psituacao and attribute_not_exists(#pdisponibilidade)",
                    ExpressionAttributeNames =
                    {
                        { "#psituacao", "Situacao" },
                        { "#pdisponibilidade", "Disponibilidade" }
                    },
                    ExpressionAttributeValues =
                    {
                        { ":v_psituacao", new Primitive("1", true) },
                    }
                }
            };

            var search = table.Query(query);
            var docs = await search.GetNextSetAsync();
var query=new QueryOperationConfig
{
KeyExpression=新表达式
{
ExpressionStatement=“#pkey=:v#pkey和#skey>=:v#skey”,
表达式属性名称={
{#pkey”,“MailingId},
{#skey”,“RegistroCarteiraId”},
},
ExpressionAttributeValues=新字典()
{
{“:v_pkey”,新原语(“62”,真)},
{“:v_skey”,新原语(“00e0bbfc-aed0-4f0e-acef-a3623a9f9694”),
},
},
BackwardSearch=false,
一致性阅读=正确,
极限=1,
FilterExpression=新表达式
{
表达式statement=“#psituacao=:v#psituacao和属性#不存在(#pdisponibilidade)”,
表达式属性名称=
{
{#psituacao”,“Situacao”},
{pdisponibilidade”,“Disponibilidade}
},
表达式属性值=
{
{“:v_psituacao”,新原语(“1”,真)},
}
}
};
var search=table.Query(查询);
var docs=await search.GetNextSetAsync();
我没有得到任何错误,结果只有一个空数组。如果我将排序键更改为不同的值,它会工作,但对于这个特定的值,它不会

我整天都在做这件事,不知道出了什么问题

任何帮助都将不胜感激


谢谢

问题在于限制1

正如我发现的,筛选只发生在获取的项目上,并且,由于我仅获取1个项目,因此当筛选发生时,结果没有与条件匹配的记录


取消限制1解决了问题。

问题在于限制1

正如我发现的,筛选只发生在获取的项目上,并且,由于我仅获取1个项目,因此当筛选发生时,结果没有与条件匹配的记录


取消限制1解决了问题。

添加更多信息。限制控制服务在返回之前评估的项目数。SDK不会对该值执行任何操作。因此,如果将其设置为1,服务将查看“MailingId”分区中的第一项,查看它是否匹配排序键查询和筛选器表达式并返回。如果该项的计算结果不是true,则它将返回0项。并不是说您应该这样做,而是您可以一直调用GetNextSetAsync,它会在“MailingId”分区中分页,并最终返回您的项目。这不是一种有效的搜索方式。没错!我后来才意识到。。。但最后我改变了我的数据,这样我就可以在不需要分页等的情况下得到我所需要的。不过这是一个很好的澄清!添加更多信息。限制控制服务在返回之前评估的项目数。SDK不会对该值执行任何操作。因此,如果将其设置为1,服务将查看“MailingId”分区中的第一项,查看它是否匹配排序键查询和筛选器表达式并返回。如果该项的计算结果不是true,则它将返回0项。并不是说您应该这样做,而是您可以一直调用GetNextSetAsync,它会在“MailingId”分区中分页,并最终返回您的项目。这不是一种有效的搜索方式。没错!我后来才意识到。。。但最后我改变了我的数据,这样我就可以在不需要分页等的情况下得到我所需要的。不过这是一个很好的澄清!