2017-06-19 5 views
0

J'ai deux dictionnaires. L'un est un dictionnaire réel (mot pour la clé et la définition pour la valeur) et l'autre est des mots qui sont dans un fichier Word et stockés dans un dictionnaire de la seconde.Comparer deux dictionnaires C# et obtenir les mêmes clés

//first dictionary 
    var xdoc = XDocument.Load("dicoFrancais.xml"); 
      var dico = xdoc.Root.Elements() 
           .ToDictionary(a => (string)a.Attribute("nom"), 
              a => (string)a.Element("DEFINITION")); 

//second dictionary 
Dictionary<string, string> motRap = new Dictionary<string, string>(); 
     Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application(); 
     Document document = application.Documents.Open("monfichiertxt.docx"); 


     int count = document.Words.Count; 
     for (int i = 1; i <= count; i++) 
     {     
      string text = document.Words[i].Text;     
      motRap.Add(text, "blabla");     
     } 
     // Close word. 
     application.Quit(); 

Et je veux comparer les clés des deux dictionnaires et d'obtenir les mêmes touches avec les valeurs du premier dictionnaire, donc je peux avoir un troisième dictionnaire avec que les clés et les valeurs. J'ai essayé ceci: var intersectMembers = dico.Keys.Intersect(motRap.Keys) .ToDictionary(t => t, t => dico[t]); mais cela ne fonctionne pas. Quelqu'un peut-il m'aider s'il vous plaît, Merci. (Désolé mon anglais n'est pas très bon)

+1

« mais il ne fonctionne pas » Qu'est-ce que cela signifie? Quels résultats avez-vous obtenus et qu'attendez-vous? – HimBromBeere

+0

Le troisième dictionnaire n'affiche pas – titi2fois

Répondre

0

Je veux comparer les clés des deux dictionnaires et obtenir les mêmes clés avec les valeurs du premier dictionnaire.

var thirdDictionary = dico 
    .Where(keyValue => motRap.Keys.Contains(keyValue.Key)) 
    .ToDictionary(keyValue => keyValue.Key, keyValue => keyValue.Value);