Linq Как получить среднее значение Когда все значения равны нулю или 0? MVC
Когда моя модель имеет значения, я могу легко получить среднее значение с помощью этого кода
@Model.Where(a => a.count!= null).Average(a => a.totalday).ToString()
Например:
количество = 7 всего дня = 3 в среднем = 2,33
Но я не могу получить среднее значение, когда значения моей модели равны нулю или нулю. Как вы знаете, мы не можем разделить 0 на 0 или ноль на ноль.
Я имею в виду;
count = 0 или ноль; totalday= 0 или ноль; средний =????
Если все значения равны нулю, как я могу записать свою таблицу в "0" или строку типа "нет никакого среднего"
Я много чего перепробовал, но получаю ошибку.
2 ответа
Это действительно зависит от того, что вы хотите сделать. Если у вас есть какое-то значение по умолчанию для среднего значения, вы можете использовать DefaultIfEmpty
@Model.Where(a => a.count!= null)
.Select(a => a.totalday)
.DefaultIfEmpty(0)
.Average()
.ToString()
Но если было бы лучше отобразить что-то еще целиком, вам сначала нужно проверить, есть ли какие-либо элементы в отфильтрованной последовательности.
Там нет проблем с нулями в вашем списке.
var list = new List<int>{ 0,1,2,3,4,5,6};
var avg = list.Average(); // avg = 3
Возможно, вы захотите позаботиться о своих нулях, но вы можете легко отфильтровать их с помощью:
var not_null_list = some_list.Where(item => item != null);
Оттуда вы должны быть в порядке (Если вам не нужно учитывать числа, которые являются нулевыми, что не имеет особого смысла, я думаю....)
Редактировать:
Я вижу твою дилемму. Я бы предложил следующее в этом случае:)
var list = new List<int>{};
string answer;
if (list.Any ())
answer = list.Average();
else
answer = "User is a shmartsy pants. Try again with valid data";