Bei der Verwendung von AWS DynamoDB "Object Persistence Model" in C# kam es zu einem interessanten Problem; Parsen der Ergebnisse einer Scan-Operation. Im folgenden Code sind meine Einträge in Datastore.userIndicators (ein Dictionary mit Objektlisten, die mit Benutzernamen indiziert sind) immer leere Listen.Warum findet IEnumerable.Where() meine Objekte in DynamoDBContext.Scan() Ergebnissen nicht?
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();
}
So zum Beispiel, wenn ich Einträge in meinem Tisch habe, die ein Attribut „username“ mit dem Wert „userA“ enthalten, wenn Sie diesen Code läuft die Dictionary „Datastore.userIndicators“ wird mit einem Eintrag am Ende für Schlüssel "userA" aber der entsprechende Wert wird eine leere Liste sein.