How to use lastEvaluatedKey with .ScanAsync?

Viewed 88

I want to paginate through records in a dynamo table using a lastEvaluatedKey. How can I use the scanfilter to use the lastEvaluatedKey to begin the next request at that given location?

  public  List<Record>? GetRecords(Request request)
        {
            // Define marker variable
            Dictionary<string, AttributeValue> startKey = null!;
            var records = new List<Record>();
            do
            {
                // Issue request
                Condition cond = new Condition();
                cond.ComparisonOperator = "NULL";
                cond.AttributeValueList = new List<AttributeValue>() { };
                var scanFilter = new Dictionary<string, Condition>() { { "ExecutedTime", cond } };

                var allEvents = client.ScanAsync("rRecords", scanFilter).Result; //Dictionary<string, Condition> scanFilter
                                                                                          // View all returned items

                List<Dictionary<string, AttributeValue>> items = allEvents.Items;

                foreach (Dictionary<string, AttributeValue> item in items)
                {
                     //do stuff
                }
                // Set marker variable
                startKey = allEvents.LastEvaluatedKey;
            } while (startKey != null && startKey.Count != 0);
            return scheduledEventRecords;
        }

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelDotNetScanning.html I have tried this approach but those APIs (.Scan on the AmazonDynamoDBClient) are not available the version AWSSDK 3.5.1.20 that I am currently using.

0 Answers
Related