Tengo una pregunta acerca de LINQ/Lambda y el problema siguiente:C# diccionarios intersectar
Tengo dos diccionarios, primaria y secundaria ... Estos dos diccionarios se definen como clave = cadena, Valor = int. Necesito recortar el diccionario principal si las TECLAS se cruzan con el diccionario secundario.
es decir:
primaryDict = ["thing1", 33] ["thing2", 24] ["thing3", 21] ["thing4", 17] ["thing5", 12]
secondaryDict = ["thing1", 22] ["thing3", 20] ["thing4", 19] ["thing7", 17] ["thing9", 10]
resultDict = ["thing1", 33] ["thing3", 21] ["thing4", 17]
Mi intento:
resultDict = primaryDict.Keys.Intersect(secondaryDict.Keys).ToDictionary(t => t.Key, t.Value);
Esto, obviamente, no funciona debido a que el primaryDict.Keys.Intersect está devolviendo una lista de claves ... ¿cómo iba a restablecer una nueva diccionario, o emparejar el diccionario principal? Cualquier ayuda sería apreciada.
creo que la última versión es mucho mejor, ya que no creo que tratar el diccionario como un IEnumerable aprovechará el diccionario, y se ejecutarán en O (n) tiempo –
Eso funcionó muy bien para lo que estoy haciendo ... Usé la segunda solución y todo está funcionando como se esperaba. ¡Rock, Dave! –
Como seguimiento ... ¿es posible sumar los valores en esta misma expresión? –