2011-06-23 14 views
0

以下のクエリから、常にゼロになるため、失敗率を取得するのに苦労しています。私は間違ったことをしていますか?そのため、常に<成功を失敗した場合は、ゼロ与える成功によって失敗割る:LINQクエリ - 同じステートメント内の合計フィールドの割合を計算する

from n in calculateOrderStatus 
group n by new { n.OrderDate.Date, n.OrderDate.Hour } into h 
select new 
{ 
    Failed = h.Sum(n => n.Failed), 
    Success = h.Sum(n => n.Success), 
    FailurePercentage = (h.Sum(n => n.Failed)/h.Sum(n => n.Success)) * 100 
} 

答えて

0

あなたは浮動小数点ない、整数の除算をやっています。最初に100を掛け合わせて失敗した場合、、次にを成功で除算します。 FailurePercentage = 100 * h.Sum(n => n.Failed)/h.Sum(n => n.Success)

+0

何私はまだのようにそれを取得しています0 – user811970

+0

そして、 'h.Sum(n => n.Failed)'は '' h.Sum(n => n.Success) 'と比較してゼロか、非常に小さいです。しかし、そうでなければコードに間違いはない。 –

+0

これは機能します。ありがとう – user811970

0

すなわち

ない

浮動小数点型へのあなたの計算のオペランドをキャストしてみます(技術的には最初のものをキャストすることは十分ですが)

FailurePercentage = ((double)h.Sum(n => n.Failed)/(double)h.Sum(n => n.Success)) * 100.0