sql >> Database >  >> NoSQL >> MongoDB

c# mongodb-stuurprogramma hoe een mongo dubbele waarde naar een c# decimale waarde te casten

De beste optie zou hier waarschijnlijk bij passen:

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

De reden waarom dit zo goed werkt, is dat de abstracte BsonValue type implementeert een methode die er als volgt uitziet:

public virtual decimal ToDecimal()

De concrete implementaties van BsonValue (bijv. BsonInt32 , BsonInt64 , BsonDouble etc.) overschrijf dit lid met de onderstaande methode die je precies geeft wat je wilt, ongeacht of de driver een int, een long of een double deserialiseert uit een opgeslagen document:

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

Als alternatief, in uw specifieke geval (en als alle documenten in het toepassingsgebied een int hebben die is opgeslagen in hun "monto"-veld), kunt u gewoon schrijven:

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

of zelfs gewoon

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

die semantisch identiek zijn.



  1. MongoDB geneste array zoeken met $map

  2. Mongoose verloopt eigendom werkt niet goed

  3. Hoe gegevens in een mongodb-verzameling in te voegen met behulp van de c# 2.0-driver?

  4. Mongoose:hoe aggregaat gebruiken en samen zoeken