MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

driver c# mongodb como converter um valor duplo mongo para um decimal c#


A melhor opção provavelmente seria ir com isso:
monto = document["monto"].ToDecimal();

A razão pela qual isso funciona tão bem é que o abstrato BsonValue type implementa um método que se parece com isso:
public virtual decimal ToDecimal()

As implementações concretas de BsonValue (por exemplo, BsonInt32 , BsonInt64 , BsonDouble etc.) substitua este membro pelo método abaixo, que fornece exatamente o que você deseja, não importa se o driver desserializa um int, um long ou um double de um documento armazenado:
public override decimal ToDecimal()
{
    return (decimal)_value;
}

Alternativamente, no seu caso específico (e se todos os documentos no escopo tiverem um int armazenado em seu campo "monto"), você pode simplesmente escrever:
monto = Convert.ToDecimal(document["monto"].AsInt32)

ou mesmo apenas
monto = (decimal)(document["monto"].AsInt32)

que são semanticamente idênticos.