.Net Dictionary简化循环体小记

1 篇文章 0 订阅
1 篇文章 0 订阅

一个很简单的动态匹配的问题

假设有三个集d1,d2,d3,d1集合内存放源目标,d2文件内存放中间目标,d3文件存放最终目标,d2,d3键值完全一样,求在d3集合内符合查询条件的最终目标

上代码先

			//中间目标集合
 Dictionary<long, long> d1 = new Dictionary<long, long>();
            d1.Add(1, 11);
            d1.Add(2, 21);
            d1.Add(3, 33);
            d1.Add(4, 41);
            d1.Add(5, 31);
            d1.Add(6, 61);

			//源目标集合
            List<long> lll = new List<long>();
            lll.Add(11);
            lll.Add(33);
			//最终目标集合
            Dictionary<long, long> d2 = new Dictionary<long, long>();
            d2.Add(1, 12);
            d2.Add(2, 21);
            d2.Add(3, 33);
			//结果集合
            Dictionary<long, long> d3 = new Dictionary<long, long>();

			//循环源目标集合
            foreach (var item in lll)
            {
            	//取出中间目标中符合查询条件的值
                var dicFin_GUID = d1.Where(c => c.Value.Equals(item)).ToList();
               	//循环该值
                for (int i = 0; i < dicFin_GUID.Count; i++)
                {
                    long l = dicFin_GUID.ElementAt(i).Key;
                    //取出最终目标中符合查询条件的值
                    var ss = d2.Where(c => c.Key.Equals(l)).ToList();
                    if(ss.Count > 0)
                    {
                    	//判断是否符合集合条件
                        long p = ss.ElementAt(i).Value;
                        //得到结果集合
                        d3.Add(l, p);
                    }
                    int j = 100;
                }
            }

简单说就是d1是d2的查询条件,查询结果是d3查询条件,最终结果存放在d4中

可以避免对三个集合的环循环,减少复杂度的同时,比较好控制程序的走向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值