2011-10-13 53 views
0

我有一个包含60个元素的observablecollection,每个元素都包含数字的数据(double)。我想获得60个元素的平均值((总共60个元素)/ 60)。任何想法如何我可以去做呢?获取可观察的收集元素数据的平均值

这里是我的代码:

public class MainWindow : Window 
{    
    DispatcherTimer timer = new DispatcherTimer(); 
    double i = 0; 
    ObservableCollection<KeyValuePair<double, double>> Power = new ObservableCollection<KeyValuePair<double, double>>(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

     timer.Interval = new TimeSpan(0, 0, 1); // per 5 seconds, you could change it 
     timer.Tick += new EventHandler(timer_Tick); 
     timer.IsEnabled = true; 
    } 

Random random = new Random(DateTime.Now.Millisecond); 

    void timer_Tick(object sender, EventArgs e) 
    { 

     Power.Add(new KeyValuePair<double, double>(i, random.NextDouble())); 
     i += 5; 

    } 
} 

回答

3

可以使用Average() LINQ到对象扩展方法:

var avg = Power.Average(x => x.Value);