linq去掉不等于0的数据求平均
来源:互联网 发布:企业铃声制作软件 编辑:程序博客网 时间:2024/05/22 23:58
1>MainPageController的GetForecastAir方法
var stationDataQuery = efAir.FindAll<T_MID_FORECASTSTATISTICS>(d => d.MONITORTIME == lastDate && d.FORECASTTIME > lastMoniDate);
stationDataQuery = stationDataQuery.Where(t => t.MODEL == "0");var s1 = stationDataQuery.ToList();
var stationMonitorQuery = efAir.FindAll<T_MID_CityAIRQUALITYDAY>(d => d.MONIDATE > firstDate && d.REGIONCODE == cityid);
//d.MONIDATE < lastDate && 有3.16号的日均值监测数据,从3.14号开始无预测数据
//站点信息var stationInfoQuery = efAir.FindAll<T_BAS_AIRSTATION>(d => d.REGIONCODE == cityid && d.ISSTAT != 0);// && d.ISSTAT != 0
//连接查询获取预报数据。
var datas = (
from s in stationInfoQuery
join d in stationDataQuery on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
CO = (decimal)d.CO,
NO2 = (short)d.NO2,
O3 = (short)d.O3,
O38H = (short)d.O38H,
PM10 = (short)d.PM10,
PM25 = (short)d.PM25,
SO2 = (short)d.SO2
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
CO = t.Average(x => x.CO),//GetAvgValue(t, x => x.CO), //s.Average(x => x.CO),
NO2 = t.Average(x => x.NO2),//GetAvgValue(s, x => x.NO2),
O3 = t.Average(x => x.O3),//GetAvgValue(s, x => x.O3),
O38H = t.Average(x => x.O38H),//GetAvgValue(s, x => x.O3),
PM10 = t.Average(x => x.PM10),//GetAvgValue(s, x => x.PM10),
PM25 = t.Average(x => x.PM25),//GetAvgValue(s, x => x.PM25),
SO2 = t.Average(x => x.SO2),//GetAvgValue(s, x => x.SO2)
MONIDATE = t.Max(x => x.MONITORTIME)
});
//污染物浓度为0的不参与市均值的计算20160821
//计算CO的市均值
var stationDataQuery_co = stationDataQuery.Where(s => s.CO > 0);
var data_co = (
from s in stationInfoQuery
join d in stationDataQuery_co on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
CO = (decimal)d.CO,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
CO = t.Average(x => x.CO),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算NO2的市均值
var stationDataQuery_NO2 = stationDataQuery.Where(s => s.NO2 > 0);
var data_NO2 = (
from s in stationInfoQuery
join d in stationDataQuery_NO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONNO2DE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
NO2 = (decimal)d.NO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONNO2DE, g.MONITORTIME })
.Select(t => new
{
REGIONNO2DE = t.Key.REGIONNO2DE,
NO2 = t.Average(x => x.NO2),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算SO2的市均值
var stationDataQuery_SO2 = stationDataQuery.Where(s => s.SO2 > 0);
var data_SO2 = (
from s in stationInfoQuery
join d in stationDataQuery_SO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONSO2DE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
SO2 = (decimal)d.SO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONSO2DE, g.MONITORTIME })
.Select(t => new
{
REGIONSO2DE = t.Key.REGIONSO2DE,
SO2 = t.Average(x => x.SO2),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算O3的市均值
var stationDataQuery_O3 = stationDataQuery.Where(s => s.O3 > 0);
var data_O3 = (
from s in stationInfoQuery
join d in stationDataQuery_O3 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONO3DE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
O3 = (decimal)d.O3,
}
)
.ToList()
.GroupBy(g => new { g.REGIONO3DE, g.MONITORTIME })
.Select(t => new
{
REGIONO3DE = t.Key.REGIONO3DE,
O3 = t.Average(x => x.O3),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算O38H的市均值
var stationDataQuery_O38H = stationDataQuery.Where(s => s.O38H > 0);
var data_O38H = (
from s in stationInfoQuery
join d in stationDataQuery_O38H on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONO38HDE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
O38H = (decimal)d.O38H,
}
)
.ToList()
.GroupBy(g => new { g.REGIONO38HDE, g.MONITORTIME })
.Select(t => new
{
REGIONO38HDE = t.Key.REGIONO38HDE,
O38H = t.Average(x => x.O38H),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算PM10的市均值
var stationDataQuery_PM10 = stationDataQuery.Where(s => s.PM10 > 0);
var data_PM10 = (
from s in stationInfoQuery
join d in stationDataQuery_PM10 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONPM10DE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
PM10 = (decimal)d.PM10,
}
)
.ToList()
.GroupBy(g => new { g.REGIONPM10DE, g.MONITORTIME })
.Select(t => new
{
REGIONPM10DE = t.Key.REGIONPM10DE,
PM10 = t.Average(x => x.PM10),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算PM25的市均值
var stationDataQuery_PM25 = stationDataQuery.Where(s => s.PM25 > 0);
var data_PM25 = (
from s in stationInfoQuery
join d in stationDataQuery_PM25 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONPM25DE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
PM25 = (decimal)d.PM25,
}
)
.ToList()
.GroupBy(g => new { g.REGIONPM25DE, g.MONITORTIME })
.Select(t => new
{
REGIONPM25DE = t.Key.REGIONPM25DE,
PM25 = t.Average(x => x.PM25),
MONIDATE = t.Max(x => x.MONITORTIME)
});
var data7 = (
from s in datas
join d1 in data_co on s.MONIDATE equals d1.MONIDATE
join d2 in data_NO2 on s.MONIDATE equals d2.MONIDATE
join d3 in data_SO2 on s.MONIDATE equals d3.MONIDATE
join d4 in data_O3 on s.MONIDATE equals d4.MONIDATE
join d5 in data_O38H on s.MONIDATE equals d5.MONIDATE
join d6 in data_PM10 on s.MONIDATE equals d6.MONIDATE
join d7 in data_PM25 on s.MONIDATE equals d7.MONIDATE
select new
{
REGIONCODE = s.REGIONCODE,
MONIDATE = s.MONIDATE,
CO = (decimal)d1.CO,
NO2 = (short)d2.NO2,
SO2 = (short)d3.SO2,
O3 = (short)d4.O3,
O38H = (short)d5.O38H,
PM10 = (short)d6.PM10,
PM25 = (short)d7.PM25
});
//计算市均值
foreach (var item in data7)//datas__20160821去掉0求平均
2>ReportController的avgCityNum方法
ReportController的LoadForeAvgAQIData方法
//污染物浓度为0的不参与市均值的计算20160821
//计算CO的市均值
var stationDataQuery_co = stationDataQuery.Where(s => s.CO > 0);
var data_co = (
from s in stationInfoQuery
join d in stationDataQuery_co on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE=s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
CO = (decimal)d.CO,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE=t.Key.REGIONCODE,
CO = t.Average(x => x.CO),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算NO2的市均值
var stationDataQuery_NO2 = stationDataQuery.Where(s => s.NO2 > 0);
var data_NO2 = (
from s in stationInfoQuery
join d in stationDataQuery_NO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
NO2 = (decimal)d.NO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
NO2 = t.Average(x => x.NO2),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算SO2的市均值
var stationDataQuery_SO2 = stationDataQuery.Where(s => s.SO2 > 0);
var data_SO2 = (
from s in stationInfoQuery
join d in stationDataQuery_SO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
SO2 = (decimal)d.SO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
SO2 = t.Average(x => x.SO2),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算O3的市均值
var stationDataQuery_O3 = stationDataQuery.Where(s => s.O3 > 0);
var data_O3 = (
from s in stationInfoQuery
join d in stationDataQuery_O3 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
O3 = (decimal)d.O3,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
O3 = t.Average(x => x.O3),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算O38H的市均值
var stationDataQuery_O38H = stationDataQuery.Where(s => s.O38H > 0);
var data_O38H = (
from s in stationInfoQuery
join d in stationDataQuery_O38H on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
O38H = (decimal)d.O38H,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
O38H = t.Average(x => x.O38H),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算PM10的市均值
var stationDataQuery_PM10 = stationDataQuery.Where(s => s.PM10 > 0);
var data_PM10 = (
from s in stationInfoQuery
join d in stationDataQuery_PM10 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
PM10 = (decimal)d.PM10,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
PM10 = t.Average(x => x.PM10),
MONIDATE = t.Max(x => x.MONITORTIME)
});
//计算PM25的市均值
var stationDataQuery_PM25 = stationDataQuery.Where(s => s.PM25 > 0);
var data_PM25 = (
from s in stationInfoQuery
join d in stationDataQuery_PM25 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.FORECASTTIME,
PM25 = (decimal)d.PM25,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
PM25 = t.Average(x => x.PM25),
MONIDATE = t.Max(x => x.MONITORTIME)
});
var data7 = (
from s in data4
//join d1 in data_co on new { s.FORECASTTIME, s.REGIONCODE }
// equals new { d1.MONIDATE, d1.REGIONCODE }
join d1 in data_co on s.FORECASTTIME equals d1.MONIDATE
where s.REGIONCODE==d1.REGIONCODE
join d2 in data_NO2 on s.FORECASTTIME equals d2.MONIDATE
where s.REGIONCODE == d2.REGIONCODE
join d3 in data_SO2 on s.FORECASTTIME equals d3.MONIDATE
where s.REGIONCODE == d3.REGIONCODE
join d4 in data_O3 on s.FORECASTTIME equals d4.MONIDATE
where s.REGIONCODE == d4.REGIONCODE
join d5 in data_O38H on s.FORECASTTIME equals d5.MONIDATE
where s.REGIONCODE == d5.REGIONCODE
join d6 in data_PM10 on s.FORECASTTIME equals d6.MONIDATE
where s.REGIONCODE == d6.REGIONCODE
join d7 in data_PM25 on s.FORECASTTIME equals d7.MONIDATE
where s.REGIONCODE == d7.REGIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
FORECASTTIME = s.FORECASTTIME,
REGIONNAME = s.REGIONNAME,
CO = (decimal)d1.CO,
NO2 = (short)d2.NO2,
SO2 = (short)d3.SO2,
O3 = (short)d4.O3,
O38H = (short)d5.O38H,
PM10 = (short)d6.PM10,
PM25 = (short)d7.PM25
}).OrderBy(a => a.REGIONCODE);
foreach (var item in data7)//data4__20160821去掉0求平均
3>PatternForecastController的getDataByWhere方法
DidPeriodForeController的getDataByWhere方法
AccuracyRateController的getAvgFore方法
//污染物浓度为0的不参与市均值的计算20160821
//计算CO的市均值
var stationDataQuery_co = datas.Where(s => s.CO > 0);
var data_co = (
from s in stationInfoQuery
join d in stationDataQuery_co on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
CO = (decimal)d.CO,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
CO = t.Average(x => x.CO),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算NO2的市均值
var stationDataQuery_NO2 = datas.Where(s => s.NO2 > 0);
var data_NO2 = (
from s in stationInfoQuery
join d in stationDataQuery_NO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
NO2 = (decimal)d.NO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
NO2 = t.Average(x => x.NO2),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算SO2的市均值
var stationDataQuery_SO2 = datas.Where(s => s.SO2 > 0);
var data_SO2 = (
from s in stationInfoQuery
join d in stationDataQuery_SO2 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
SO2 = (decimal)d.SO2,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
SO2 = t.Average(x => x.SO2),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算O3的市均值
var stationDataQuery_O3 = datas.Where(s => s.O3 > 0);
var data_O3 = (
from s in stationInfoQuery
join d in stationDataQuery_O3 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
O3 = (decimal)d.O3,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
O3 = t.Average(x => x.O3),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算O38H的市均值
var stationDataQuery_O38H = datas.Where(s => s.O38H > 0);
var data_O38H = (
from s in stationInfoQuery
join d in stationDataQuery_O38H on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
O38H = (decimal)d.O38H,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
O38H = t.Average(x => x.O38H),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算PM10的市均值
var stationDataQuery_PM10 = datas.Where(s => s.PM10 > 0);
var data_PM10 = (
from s in stationInfoQuery
join d in stationDataQuery_PM10 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
PM10 = (decimal)d.PM10,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
PM10 = t.Average(x => x.PM10),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
//计算PM25的市均值
var stationDataQuery_PM25 = datas.Where(s => s.PM25 > 0);
var data_PM25 = (
from s in stationInfoQuery
join d in stationDataQuery_PM25 on s.STATIONCODE equals d.STATIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME = d.MONITORTIME,
FORECASTTIME = d.FORECASTTIME,
PM25 = (decimal)d.PM25,
}
)
.ToList()
.GroupBy(g => new { g.REGIONCODE, g.MONITORTIME, g.FORECASTTIME })
.Select(t => new
{
REGIONCODE = t.Key.REGIONCODE,
PM25 = t.Average(x => x.PM25),
MONITORTIME = t.Max(x => x.MONITORTIME),
FORECASTTIME = t.Max(x => x.FORECASTTIME)
});
var data7 = (
from s in dataNew
//join d1 in data_co on new { s.FORECASTTIME, s.REGIONCODE }
// equals new { d1.MONIDATE, d1.REGIONCODE }
join d1 in data_co on new { s.MONITORTIME,s.FORECASTTIME } equals new { d1.MONITORTIME,d1.FORECASTTIME }
where s.REGIONCODE == d1.REGIONCODE
join d2 in data_NO2 on new { s.MONITORTIME, s.FORECASTTIME } equals new { d2.MONITORTIME, d2.FORECASTTIME }
where s.REGIONCODE == d2.REGIONCODE
join d3 in data_SO2 on new { s.MONITORTIME,s.FORECASTTIME } equals new { d3.MONITORTIME,d3.FORECASTTIME }
where s.REGIONCODE == d3.REGIONCODE
join d4 in data_O3 on new { s.MONITORTIME,s.FORECASTTIME } equals new { d4.MONITORTIME,d4.FORECASTTIME }
where s.REGIONCODE == d4.REGIONCODE
join d5 in data_O38H on new { s.MONITORTIME,s.FORECASTTIME } equals new { d5.MONITORTIME,d5.FORECASTTIME }
where s.REGIONCODE == d5.REGIONCODE
join d6 in data_PM10 on new { s.MONITORTIME,s.FORECASTTIME } equals new { d6.MONITORTIME,d6.FORECASTTIME }
where s.REGIONCODE == d6.REGIONCODE
join d7 in data_PM25 on new { s.MONITORTIME,s.FORECASTTIME } equals new { d7.MONITORTIME,d7.FORECASTTIME }
where s.REGIONCODE == d7.REGIONCODE
select new
{
REGIONCODE = s.REGIONCODE,
MONITORTIME=s.MONITORTIME,
FORECASTTIME = s.FORECASTTIME,
REGIONNAME = s.REGIONNAME,
CO = (decimal)d1.CO,
NO2 = (short)d2.NO2,
SO2 = (short)d3.SO2,
O3 = (short)d4.O3,
O38H = (short)d5.O38H,
PM10 = (short)d6.PM10,
PM25 = (short)d7.PM25
}).OrderBy(a => a.REGIONCODE).ToList();;
//求各市均值
foreach (var item in data7)//dataNew__20160821去掉0求平均
- linq去掉不等于0的数据求平均
- 多列去掉两个最小值求平均
- 大量滚动数据求平均
- javascript里的 不等于 的符号、 去掉字符串首尾空格
- sql分钟数据求平均得到小时数据
- 求低于平均分的人数
- 求5个同学的平均成绩
- 求n门课程的平均成绩
- 一个防止溢出的求平均方法
- 求学生三门成绩的平均成绩
- 求自定类型元素的平均
- 求参赛者的平均分,取最大值
- 求给定字符串的平均字符长度
- 求实验成功的平均期望
- 求去掉最高和最低分后的平均分并在10个评委中找出最公平和最不公平的评委
- 平均值的一种取法--去掉两端的值后再平均
- C语言编程:青年歌手参加歌曲大奖赛,有10个评委打分(满分10分),去掉最高最低分后,试编程求选手的平均得分
- 多维数据的LINQ
- 简单谈谈android studio 的单元测试
- java 常见的异常大集合
- yii2 安装问题 利用composer安装 windows环境
- Java Web 中application(应用级) session(会话级) request(请求级)如何实现数据共享
- php require和include区别
- linq去掉不等于0的数据求平均
- libSVM笔记之(一)在matlab环境下安装配置libSVM
- display的block、none、inline属性及解释
- 本地化房产网站的运营策略
- 将小写金额转成大写金额
- spoj Brocken Data Base
- bzoj 2763: [JLOI2011]飞行路线 分层图最短路
- (学习笔记)stm32f4在液晶上画圆及填充圆的几种方法
- Flume-ng数据连接kafka