MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

c# Mongodb-Treiber, wie man einen Mongo-Double-Wert in einen C#-Dezimalwert umwandelt

Die beste Option wäre wahrscheinlich dies:

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

Der Grund, warum das so gut funktioniert, ist, dass der abstrakte BsonValue type implementiert eine Methode, die so aussieht:

public virtual decimal ToDecimal()

Die konkreten Implementierungen von BsonValue (zB BsonInt32 , BsonInt64 , BsonDouble usw.) überschreiben Sie dieses Mitglied mit der folgenden Methode, die Ihnen genau das gibt, was Sie wollen, egal ob der Treiber ein int, ein long oder ein double aus einem gespeicherten Dokument deserialisiert:

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

Alternativ können Sie in Ihrem speziellen Fall (und wenn alle Dokumente im Geltungsbereich ein int in ihrem "Monto"-Feld gespeichert haben) einfach schreiben:

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

oder auch nur

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

die semantisch identisch sind.