MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

driver c# mongodb come eseguire il cast di un valore double mongo su uno decimale c#

L'opzione migliore sarebbe probabilmente questa:

monto = document["monto"].ToDecimal();

Il motivo per cui funziona così bene è che l'abstract BsonValue type implementa un metodo simile al seguente:

public virtual decimal ToDecimal()

Le implementazioni concrete di BsonValue (es. BsonInt32 , BsonInt64 , BsonDouble ecc.) sovrascrivi questo membro con il metodo seguente che ti dà esattamente quello che vuoi, non importa se il driver deserializza un int, un long o un double da un documento memorizzato:

public override decimal ToDecimal()
{
    return (decimal)_value;
}

In alternativa, nel tuo caso specifico (e se tutti i documenti in scope hanno un int memorizzato nel loro campo "monto") puoi semplicemente scrivere:

monto = Convert.ToDecimal(document["monto"].AsInt32)

o anche solo

monto = (decimal)(document["monto"].AsInt32)

semanticamente identici.