一个很简单的动态匹配的问题
假设有三个集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中
可以避免对三个集合的环循环,减少复杂度的同时,比较好控制程序的走向