2013-06-19 4 views
0

(Я не знаю, следует ли мне называть их объектами или элементами, извините, если я набрал неправильное имя).Среднее значение массива с двумя объектами

У меня есть этот массив:

data[] readings; 

Если я хочу значение я использую следующее (I = некоторые позиции):

readings[i].value; 

И если я хочу дату:

readings[i].date; 

Как получить среднюю оценку всех value в readings используя, как правило, средний метод?

+0

Дубликат: [как усреднить вход массива] (http://stackoverflow.com/questions/5527032/c-sharp-how-to-average-a-array-input) – Romoku

ответ

2

вы можете использовать LINQ для этого, что-то вдоль линий

var average = readings.Average(r => r.value); 

Примечания: Среднее Вычисляет среднее для последовательности числовых значений. MSDN Ссылка: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.average.aspx

+0

Да Я пробовал это несколько минут назад, но он не работал, ему нужен актерский состав, потому что он говорит, что он не может преобразовать объект в float. Итак, я сделал это, и теперь он работает: 'readings.Average (r => Convert.ToDouble (r.value));' – sparcopt

+0

@sparcopt Ах, круто, не был уверен, что это за тип, но я рад, что он сработал вне! Я обновлю ответ – Johan

1

Если data.value является числовым типом, который Вы можете использовать Average метод расширения Linq, как и это:

var averageValue = readings.Average(d => d.value); 

Чтобы получить среднее значение DateTime, вы можете сделать то же самое, если вы в дата тиков первый:

var averageDate = new DateTime((long)readings.Average(d => d.date.Ticks)); 
0

Попробуйте запрос Linq:

readings.Select(r => r.value).ToList().Average(); 
Смежные вопросы