“System.Collections.Generic.KeyNotFoundException”类型的异常在 mscorlib.dll 中发生,---给定关键字不在字典中。
其他信息: 给定关键字不在字典中。
【1】找到错误处:
dic1为null值,dic1.Count=0,所以错误应定位在dic1[a.CITYCODE]处
【2】代码如下:
1>>>
#region defaultdata完整数据
List<defaultData> defaultdata = new List<defaultData>();
//给defaultdata赋值,CITYCODE、monidate、CITYNAME
foreach (var item in station)
{
defaultdata.Add(new defaultData
{
CITYCODE=item.CITYCODE,
CITYNAME = item.CITYNAME,
value = "-"
});
}
#endregion
2>>>
var air_query = (from a in defaultdata
join b in GridData on a.CITYNAME equals b.CITYNAME
into temp
from tt in temp.DefaultIfEmpty()
select new
{
a.CITYNAME,
WINDSPEED = tt == null ? a.value : tt.WINDSPEED.ToString(),
WINDSPEEDMIN = tt == null ? a.value : tt.WINDSPEEDMIN.ToString(),
WINDSPEEDMAX = tt == null ? a.value : tt.WINDSPEEDMAX.ToString(),
HUMIDITYMIN = tt == null ? a.value : tt.HUMIDITYMIN.ToString(),
HUMIDITY = tt == null ? a.value : tt.HUMIDITY.ToString(),
HUMIDITYMAX = tt == null ? a.value : tt.HUMIDITYMAX.ToString(),
//当期没有数据的情况下,取值"-"
pollcout = dic.Count==0?a.value:(dic[a.CITYCODE]).ToString(),
WINDSPEED1 = tt == null ? a.value : tt.WINDSPEED1.ToString(),
WINDSPEEDMIN1 = tt == null ? a.value : tt.WINDSPEEDMIN1.ToString(),
WINDSPEEDMAX1 = tt == null ? a.value : tt.WINDSPEEDMAX1.ToString(),
HUMIDITYMIN1 = tt == null ? a.value : tt.HUMIDITYMIN1.ToString(),
HUMIDITY1 = tt == null ? a.value : tt.HUMIDITY1.ToString(),
HUMIDITYMAX1 = tt == null ? a.value : tt.HUMIDITYMAX1.ToString(),
//去年同期没有数据的情况下,取值"-"
pollcout1 = dic1.Count == 0 ? a.value : (dic1[a.CITYCODE]).ToString(),// dic1[a.CITYCODE],
RATEWIND = tt == null ? a.value : tt.RATEWIND.ToString(),
RATEHUMIDITY = tt == null ? a.value : tt.RATEHUMIDITY.ToString(),
//当期或去年同期没有数据的情况下,取值"-"
RATEPOLL = (dic.Count == 0 || dic1.Count == 0)?a.value:((dic[a.CITYCODE] - dic1[a.CITYCODE]) / (dic1[a.CITYCODE] == 0 ? 1 : dic1[a.CITYCODE]) * 100).ToString("f2")
}).ToList();
3>>>
string strData = air_query.ToJson();//GridData
strData = strData.Remove(strData.Length - 1);
return string.Format("[{0},{1}]]", strb.ToString(), strData);
4>>>
public class defaultData
{
public string CITYCODE { get; set; }
public string CITYNAME { get; set; }
public string value { get; set; }
}