2012-03-08 14 views
0

を丸めています?linq.sumは私vb.netのウェブサイトに次の行を持っている

出力の書式設定のケースであるとは思いません。合計内で何が起こっているのかが分かります。

これは間違いありませんか?

+2

「ClaimLines」の種類は何ですか?実際の結果は何ですか?期待される結果は何ですか? –

+0

あなたはブーリアンの束を集めています –

答えて

1

おそらくWhereSumが混ざっていますか?私がお勧めしたい:あなたはビット単位と操作の結果を合計している

outstandingTimesheet.ClaimLines.Where(x => !x.Queried).Sum(x => x.TotalLineCost); 

outstandingTimesheet.ClaimLines.Sum(x => (x.TotalLineCost & x.Queried)); 

は、しかし、あなたの結果は、完全に間違っていないだけで四捨五入する必要があります。 VB.NETでひどく間違っているので、これはすべてC#です。そのために残念。

VB.NETで

(サイモンによる):

totCost = outstandingTimesheet.ClaimLines.Where(Function(x) x.Queried = False).Sum(Function(x) x.TotalLineCost) 
+0

多分、彼はちょうどintにダブルを格納しています...だからラウンドアップ – squelos

+0

どういうタイプの@Simonは 'totCost'ですか? –

+0

ありがとうございました。 – Simon

0

あなたがint型の内側に、doubleとして出てくる結果を格納していることが考えだろうか? プロジェクトプロパティでOption strictを有効にできない場合があります。 これは、合計の結果を丸める結果になります。木瀆

編集で述べたように

それとも、ただ、またあなたのLINQで間違っている可能性:明確にするためOption strict:それは有効イマイチ場合は、暗黙のキャストは、警告やエラーにより通知することなく行われ、そうされることあなたがそうしていることを伝えることなく、intにdoubleをキャストできます。

Option strict and option explicit on MSDN

+0

あなたはまさに私はidotioだった。 – Simon

+0

答えを選ぶのを忘れて、人々があなたが解決策を見つけたことを知ってください:) – squelos

関連する問題