public async Task <List <Customer> > GetCustomerAsync(string bankName, string loanID, bool needCustNumFilter) { try { var customerList = new List <Customer>(); var expressionAttributeValues = new Dictionary <string, AttributeValue> { { ":BankName", new AttributeValue { S = bankName } } }; var keyConditionExpression = "BankName = :BankName"; if (needCustNumFilter) { expressionAttributeValues.Add(":LoanID", new AttributeValue { S = loanID }); keyConditionExpression = string.Concat(keyConditionExpression, " and LoanID = :LoanID"); } var queryRequest = new QueryRequest { TableName = _customerDynamoTable, ExpressionAttributeValues = expressionAttributeValues, KeyConditionExpression = keyConditionExpression }; var queryResponse = await _customerContext.QueryAsync(queryRequest); if (queryResponse != null) { foreach (var item in queryResponse.Items) { customerList = customerList.Concat(JsonConvert.DeserializeObject <List <Customer> >(item["CustomerObject"].S)).ToList(); } } return(customerList); } catch (Exception ex) { throw ex; } }