拼接完整数据
【1】defaultdata完整时间
#region defaultdata完整时间
List<defaultData> defaultdata = new List<defaultData>();
DateTime temp_time = STime;//定义defaultdata的开始时间
DateTime city_hourtime = ETime;//定义defaultdata的结束时间
//给defaultdata赋值,citycode、monidate、value
foreach (var item in station)
{
temp_time = STime;
while (temp_time <= city_hourtime)
{
defaultdata.Add(new defaultData
{
CITYCODE = item.CITYCODE,
CITYNAME = item.CITY,
MONIDATE = temp_time,
value = "-1"
});
temp_time = temp_time.AddHours(1);
}
}
#endregion
【2】defaultdata、airData 、airData_day 、awsData 数据拼接
var air_query = (from a in defaultdata
join b in airData on new { a.CITYCODE, a.MONIDATE } equals new { b.CITYCODE, b.MONIDATE }
into temp
from tt in temp.DefaultIfEmpty()
//空气质量日数据
join c in airData_day on new { a.CITYCODE, MONIDATE = Convert.ToDateTime(a.MONIDATE.ToShortDateString()) } equals new { c.CITYCODE, c.MONIDATE }
into temp1
from aa in temp1.DefaultIfEmpty()
//气象小时数据
join d in awsData on new { a.CITYCODE, a.MONIDATE } equals new { d.CITYCODE, d.MONIDATE }
into temp2
from bb in temp2.DefaultIfEmpty()
select new
{
a.CITYNAME,
a.CITYCODE,
a.MONIDATE,
SO2 = tt == null ? a.value : tt.SO2.ToString(),
NO2 = tt == null ? a.value : tt.NO2.ToString(),
O3 = tt == null ? a.value : tt.O3.ToString(),
PM25 = tt == null ? a.value : tt.PM25.ToString(),
PM10 = tt == null ? a.value : tt.PM10.ToString(),
CO = tt == null ? a.value : tt.CO.ToString(),
AQI = tt == null ? a.value : tt.AQI.ToString(),
AVGSO2 = aa == null ? a.value : aa.SO2.ToString(),
AVGNO2 = aa == null ? a.value : aa.NO2.ToString(),
AVGO3 = aa == null ? a.value : aa.O3.ToString(),
AVGPM25 = aa == null ? a.value : aa.PM25.ToString(),
AVGPM10 = aa == null ? a.value : aa.PM10.ToString(),
AVGCO = aa == null ? a.value : aa.CO.ToString(),
AVGAQI = aa == null ? a.value : aa.AQI.ToString(),
PRECIPITATION = bb == null ? a.value : bb.PRECIPITATION.ToString(),
TEMPERATURE = bb == null ? a.value : bb.TEMPERATURE.ToString(),
HUMIDITY = bb == null ? a.value : bb.HUMIDITY.ToString(),
POINTTEMPERATURE = bb == null ? a.value : bb.POINTTEMPERATURE.ToString(),
AIRPRESSURE = bb == null ? a.value : bb.AIRPRESSURE.ToString(),
VISIBILITY = bb == null ? a.value : bb.VISIBILITY.ToString(),
WIND16DIRECTION = bb == null ? a.value : bb.WIND16DIRECTION.ToString(),
WINDSPEED = bb == null ? a.value : bb.WINDSPEED.ToString()
}).ToList();
【3】defaultData定义
public class defaultData
{
public string CITYCODE { get; set; }
public string CITYNAME { get; set; }
public DateTime MONIDATE { get; set; }
public string value { get; set; }
}