J'ai une requête simple:Problème avec précision décimale dans SQL en utilisant LINQ to SQL
var results = from k in db.tree_nodes
join s in db.stocks
on k.tree_nodes_id equals s.tree_nodes_id
into tmpTable
from rowtmp in tmpTable.DefaultIfEmpty()
select new
{
stock = (rowtmp.amount == null) ?
((k.code == null) ? (decimal?)null : (decimal?)0)
:
rowtmp.amount - rowtmp.amount_in_use,
};
Ceci est le code SQL généré:
SELECT
(CASE
WHEN ([t1].[amount]) IS NULL THEN
(CASE
WHEN [t0].[code] IS NULL THEN CONVERT(Decimal(33,4),NULL)
ELSE CONVERT(Decimal(33,4),0)
END)
ELSE CONVERT(Decimal(33,4),[t1].[amount] - [t1].[amount_in_use])
END) AS [stock]
FROM [dbo].[tree_nodes] AS [t0]
LEFT OUTER JOIN [dbo].[stocks] AS [t1] ON [t0].[tree_nodes_id] = [t1].[tree_nodes_id]
Le problème est, le générateur créé Decimal(33,4)
lors de la conversion Les resultats. Donc, je reçois "123.4560" dans les résultats au lieu de "123.456" Tous mes champs dans cette requête sont decimal(14,3)
. Je ne me dérange pas le partie, mais je dois changer le , 4 à , 3. Comment puis-je faire ceci?