C#でAWS DynamoDBの "Object Persistence Model"を使用しているときに、面白い問題が発生しました。スキャン操作の結果を解析します。以下のコードでは、Datastore.userIndicators(ユーザー名でインデックスされたオブジェクトのリストを持つ辞書)の私のエントリは常に空のリストです。私は値が「ユーザA」の属性「ユーザー名」が含まれ、私のテーブルのエントリを持っている場合は、このコードを実行するときなぜIEnumerable.Where()はDynamoDBContext.Scan()の結果で自分のオブジェクトを見つけることができませんか?
var allIndicators = context.Scan<Indicator>();
Datastore.globalIndicators = allIndicators.Where(i => i.UserName == "*").ToList();
var userDefinedIndicators = allIndicators.Where(i => i.UserName != "*");
foreach (var username in userDefinedIndicators.Select(i => i.UserName).Distinct())
{
Datastore.userIndicators[username] = userDefinedIndicators.Where(i => i.DynamoDbRangeKey.StartsWith(username)).ToList();
}
ので、例えば、辞書「Datastore.userIndicatorsは」のエントリで終わるだろうキー "userA"が、対応する値は空のリストになります。