ExtraTime здесь представляет дополнительное время в баскетболе. Поскольку у большинства матчей нет дополнительного времени, ExtraTime будет иметь нулевое значение много раз.
Я искал другие вопросы и написал это, и это сработало. Код проверяет, есть ли дополнительное время, если не равен 0. И не учитывает 0 при расчете среднего.
OverTime = Math.Round(dtos.Select(p => (decimal)(p.ExtraTimeHomeTeamScore ?? 0)).Where(p => p != 0).Average(), 2),
Затем я попытался сделать что-то более сложное. Этот, чтобы проверить два разных типа данных и вычислить среднее из них. Также не включайте 0. По какой-то причине он возвращает ошибку последовательности.
OverTime = Math.Round((decimal)(dtos.Where(p => p.DataType == 0).Select(p => p.ExtraTimeHomeTeamScore ?? 0).Where( p => p != 0).Average()
+ dtos.Where(p => p.DataType == 1).Select(p => p.ExtraTimeAwayTeamScore ?? 0).Where(p => p != 0).Average()) / 2, 2)
Я пытался написать так же, как первый код. Что бы я ни делал, я не смог избавиться от Последовательность не содержит элементов Ошибка. Какая часть моего кода неверна и может быть улучшена?