“System.Collections.Generic.KeyNotFoundException”类型的异常在 mscorlib.dll 中发生,---给定关键字不在字典中。

“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; }
    }

猜你喜欢

转载自blog.csdn.net/u010082526/article/details/78920426