You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET持久化模型下DynamoDB OR条件查询无法返回正确记录问题

故障原因
  • DynamoDBOperationConfig中的ConditionalOperator属性仅对写入类操作的条件判断生效,不会控制Scan操作多过滤条件的逻辑关系,你配置的OR逻辑实际未生效。
  • 你将过滤条件同时传入了ScanAsync方法的第一个入参和config.QueryFilter:QueryFilter是Query操作专属配置,Scan操作不会读取;同时ScanAsync方法第一个参数传入的多个ScanCondition默认逻辑关系为AND,相当于执行Status = VerficationPending AND Status = Verified,不可能同时满足两个条件,仅返回Verified记录属于执行巧合。
修复方案

方案1:同字段多值匹配最优写法

你当前是对同一个Status字段匹配多个枚举值,直接使用ScanOperator.IsIn即可实现OR效果,代码更简洁:

var conditions = new List<ScanCondition>
{
    new ScanCondition("Status", ScanOperator.IsIn, Status.VerficationPending, Status.Verified)
};

return await base.context.ScanAsync<Advertisement>(conditions).GetRemainingAsync();

方案2:多字段OR条件通用写法

如果你后续需要配置不同字段的OR过滤条件,可通过ScanFilter配合ConditionalOperator实现:

var scanFilter = new ScanFilter();
scanFilter.AddCondition("Status", ScanOperator.Equal, Status.VerficationPending);
scanFilter.AddCondition("Status", ScanOperator.Equal, Status.Verified);

var config = new DynamoDBOperationConfig
{
    ConditionalOperator = ConditionalOperatorValues.Or
};

return await base.context.ScanAsync<Advertisement>(scanFilter, config).GetRemainingAsync();

内容的提问来源于stack exchange,提问作者Pankaj Rawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:24:01