c# dictionaries intersect

前端 未结 4 460
北海茫月
北海茫月 2021-01-01 20:48

I have a question about Linq / Lambda and the following issue:

I have two dictionaries, primary and secondary... These two dictionaries are defined as Key=string, Va

4条回答
  •  执笔经年
    2021-01-01 21:09

    You could do in this way:

    resultDict =  primaryDict.Keys.Intersect(secondaryDict.Keys)
                                  .ToDictionary(t => t, t => primaryDict[t]);
    

    or, alternatively:

    resultDict =  primaryDict.Where(x => secondaryDict.ContainsKey(x.Key))
                             .ToDictionary(x => x.Key, x => x.Value);
    

    the latter maybe is slightly more efficient because avoids the creation of a throw-away collection (the one generated by the Intersect method) and does not require a second access-by-key to primaryDict.

    EDIT (as per comment) :

    resultDict =  
    primaryDict.Where(x => secondaryDict.ContainsKey(x.Key))
               .ToDictionary(x => x.Key, x => x.Value + secondaryDict[x.Key]);
    

提交回复
热议问题