. Значение печатается как Amazon.DynamoDBv2.DocumentModel.DynamoDBBool вместо «истина» или «ложь» - PullRequest
0 голосов
/ 07 февраля 2019

При попытке Console.Writeline вывода запроса DynamoDB (документ), я получаю «Amazon.DynamoDBv2.DocumentModel.DynamoDBBool» вместо значения «true» или «False».Как напечатать правильное представление ToString () для любого заданного значения, полученного из DynamoDB, независимо от того, является ли оно строковым, или int, или логическим.

foreach (var resultDocument in resultDocs)
{
    foreach (var resultDocItem in resultDocument)
    {
      printString += $",{resultDocItem.Value.ToString()}";
    }
}

Этот код печатает «Amazon.DynamoDBv2.DocumentModel.DynamoDBBool», когда логическое значениеударил вместо «истина» или «ложь»

1 Ответ

0 голосов
/ 07 февраля 2019

То, что вы получаете из foreach, это KeyValuePair<string, DynamoDBEntry>, который имеет значение по умолчанию ToString().Чтобы получить строковое представление того, что вы на самом деле хотите, вам нужно использовать встроенные операторы приведения, чтобы вернуться к фактическому искомому значению.

В частности, для DynamoDBBool это может выглядеть так:

var doc = new Document();
doc.Add("aaa", new DynamoDBBool(true));
foreach(var item in doc)
{
    var s = item.Value is DynamoDBBool ? item.Value.AsBoolean().ToString() : item.Value.ToString();
    Console.WriteLine($"{item.Key} : {s}");
}

Чтобы упростить охват всех опций, мы можем использовать тот факт, что doc - это просто JSON-документ пар ключ-значение.Это переводит документ в JSON, а затем печатает правильные строковые представления каждой записи.

var doc = new Document();
doc.Add("aaa", new DynamoDBBool(true));
var dict = JsonConvert.DeserializeObject<IDictionary<string, string>>(doc.ToJson());
foreach(var item in dict)
{
    Console.WriteLine(item.Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...