dictionary1
看起来像这样
[DATA_WZD],[WERKZEUG],NUMM=1,GRUP=1,AKR=0,MODE=1,MAGA=1,LAGE=0,DURC=348.2,........NOTCH=130,MANCH=0,RED3=0,NAME="Querschnittblatt 350-3,5mm ",BEME="Bemerkung "
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=449.6........NOTCH=150,MANCH=0,RED3=0,NAME="Querschnittblatt 450/4,0mm ",BEME="Bemerkung "
[WERKZEUG] and so on.
dictionary2
看起来很相似,但有额外的键和值
[DATA_WZD]
[WERKZEUG],NUMM=1,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=385.8,.......NOTCH=130,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 35",BEME="Bemerkung"
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=429.6........NOTCH=150,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 45",BEME="Bemerkung"
[WERKZEUG].....
我希望将dictionary2
中缺少的dictionary1
中的键和值插入dictionary2
中的相同位置。应该看起来像这样
[DATA_WZD]
[WERKZEUG],NUMM=1,GRUP=1,AKR=0,MODE=1,MAGA=1,LAGE=0,DURC=348.2,........NOTCH=130,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 350-3,5mm ",BEME="Bemerkung "
[WERKZEUG],NUMM=2,GRUP=1,MAKR=0,MODE=0,MAGA=0,LAGE=0,DURC=449.6........NOTCH=150,MANCH=0,RED3=0,CYCLE=0,CMIN=0,CMAX=0,ACTIVE=1,NAME="Querschnittblatt 450/4,0mm ",BEME="Bemerkung "
[WERKZEUG]......
这样做的好方法是什么?
答案 0 :(得分:1)
您可以尝试使用Linq:
dict1.Keys.Except(dict2.Keys)
.ToList()
.ForEach(k => dict2.Add(k, dict1[k]));
或者如果你想要空字符串而不是dict1值:
dict1.Keys.Except(dict2.Keys)
.ToList()
.ForEach(k => dict2.Add(k, string.Empty));
答案 1 :(得分:0)
这是一个在伪代码中合并两个字典的简单算法:
给出
Dictionary dict1,dict2
这样做:
Dictionary dictRes = new Dictionary;
for each(key in dict1)
dictRes.Add(dict1(key));
for each(key in dict2)
if (not dictRes contains element)
dictRes.Add(dict2(key));