#linq-to-entities
#привязка к объектам
Вопрос:
Мне нужно округлить сумму десятичной дроби ?. Я делаю:
group => new {
rounded_sum = group.Sum(f => f.A) == null ? null : (decimal?)Decimal.Round((decimal)group.Sum(f => f.A), 0),
}
что не очень приятно. Возможно, есть более чистый способ?
Ответ №1:
Не могли бы вы использовать оператор объединения null? Я понимаю, что это не совсем то же самое, но это может быть уместно.
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 )
});