0

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]......

这样做的好方法是什么?

4

2 回答 2

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));
于 2013-10-27T15:29:53.830 回答
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));
于 2013-10-27T15:24:19.680 回答