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

c# mongodb driver hvordan man caster en mongo dobbelt værdi til en c# decimal

Den bedste mulighed ville sandsynligvis gå med denne:

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

Grunden til at dette fungerer så godt er, at den abstrakte BsonValue type implementerer en metode, der ser sådan ud:

public virtual decimal ToDecimal()

De konkrete implementeringer af BsonValue (f.eks. BsonInt32 , BsonInt64 , BsonDouble osv.) tilsidesætter dette medlem med nedenstående metode, som giver dig præcis, hvad du ønsker, uanset om driveren deserialiserer en int, en long eller en double fra et lagret dokument:

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

Alternativt kan du i dit specifikke tilfælde (og hvis alle dokumenter i omfang har en int gemt i deres "monto"-felt) blot skrive:

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

eller endda bare

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

som er semantisk identiske.



  1. Test af REST-ruter med curl --data, returnerer 404

  2. Sådan opretter du RedisCacheManager i spring-data 2.0.x

  3. Timeout udfører SET {Key}, inst:0, mgr:Inaktiv, kø:2, qu=1, qs=1, qc=0, wr=1/1, in=0/0

  4. Mongoose:Schema vs Model?