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

本文针对C#编程中出现的System.Collections.Generic.KeyNotFoundException异常提供了解决方案。通过分析异常产生的原因,定位到代码中使用字典时尝试访问不存在的键值所引发的问题,并给出了相应的修正建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值