Linq для юридических лиц: вокруг суммы - PullRequest
2 голосов
/ 11 октября 2011

Мне нужно округлить сумму до десятичной дроби ?. Я делаю:

group => new {
rounded_sum = group.Sum(f => f.A) == null ? null : (decimal?)Decimal.Round((decimal)group.Sum(f => f.A), 0),
}

что не очень приятно. Возможно, есть более чистый путь?

1 Ответ

5 голосов
/ 11 октября 2011

Не могли бы вы использовать нулевой оператор объединения? Я понимаю, что это не совсем то же самое, но это может быть уместно.

group => new {
   rounded_sum = Decimal.Round( group.Sum( f => f.A ) ?? 0M, 0 )
}

Другой альтернативой может быть выполнение операции в два этапа, что позволит сэкономить выполнение операции суммирования дважды, хотя это даже "слово".

  ...
   group => new {
       sum = group.Sum( f => f.A )
})
.Select( g => new {
  rounded_sum = sum == null ? null : (decimal?)Decimal.Round( sum.Value, 0 )
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...