日期:2014-05-20  浏览次数:20872 次

LINQ数据统计问题
问题是这样的,我从数据库获得到一组原始数据名字叫historydatalist,里面的实体类定义如下:
public class HistoryData
{
  Datetime datetime{get;set;}
  float value1{get;set;}
  float value2{get;set;}
  float value3{get;set;}
  float value4{get;set;}
}
现在我需要统计这个historydatalist,把原来的原始数据中每5分钟的数据取一次平均值(包括value1,value2,value3,value4)。
目前我的想法是这样:
var timeList = from p in historydatalist
  where p.datetime.Minutes % 5 == 0
  select p;
foreach(var time in timeList) 
{
  var data = from p in historydatalist
  where p.datetime>time.AddMinutes(-5) && p.datetime <= time
  select historydatalist.Average(q=>q.value1....)//写到这里就不知道怎么写了,不知道如何才能求出4个值的平均值
}
由于刚开始接触C#和LINQ以及Lamuda表达式所以不知道我这个思路对不对。
上午开了个帖子了,貌似我表达不是很清楚,所以重新开个帖子,望多多指教,感激不尽~~


------解决方案--------------------
select new { 
时间 = p.First().datetime, 
avgv1 = p.Average(x => x.value1), 
avgv2 = ... 
};
=>
select new { 
时间 = g.First().datetime, 
avgv1 = g.Average(x => x.value1), 
avgv2 = ... 
};