Linq: Sauf sur deux différents types de dictionnaires
j'ai les 2 types de dictionnaires Dictionary<int, Fooclass> oldDic
et Dictionary<int, string> barList newDic
. Maintenant, j'ai besoin de comparer des valeurs dans les deux dictionnaires. par Exemple clé peut être dans
- oldDic : 1,2,3
- newDic : 1,2,3,4
- Prévu De Sortie : 4
Maintenant, j'ai besoin de comparer les deux dictionnaires sur la base de leurs clés
toute aide serait appréciée.
Edit :
La sortie doit être comme une seconde dictionnaire(newDic) mais cela va contenir une certaine valeur de 2e dictionnaire(oldDic). Par exemple
1,"fooString" Où fooString est certaine valeur dans la Fooclass de someproperty....
Pour plus de clarté, voir ce qui n'a pas fonctionné pour moi
var addedList = from list1 in baseListDic
join list2 in trackerlist on list1.Key equals list2.Key
select new { key = list1.Key, value = list1.Value._lead };
ici baseListDic est oldDic et trackerlist est newDic....
Permettez-moi de savoir si je ne suis toujours pas clair...
eh bien, j'ai essayé, mais celui-ci me donne uniquement la sortie 4. Mais j'ai besoin d'une certaine valeur de fooClass aussi...voir mon nouveau modifier dans le post ci-dessus..
Votre nouvelle édition ne semble pas d'accord avec votre exemple original. dans votre original, vous êtes de retour de la clé qui est dans newdic mais pas vieux dic mais dans ton deuxième exemple vous semblent être de retour des valeurs dans olddic qui ont les clés en newdic? Peut-être créer un petit programme avec quelques exemples de dictionnaires qui montre ce que vous voulez? Personne ne sera jamais d'objet à vous de leur donner un peu de code, ils peuvent courir facilement... 🙂
eh bien, oui, vous avez raison...selon le premier exemple de mon exigence semble diff...mais dans mon nouveau montage...j'ai écrit quelque chose qui correspond à clés similaires dans les deux dictionnaires comme inner join et c'est l'échec d'un code donc j'ai juste posté ça pour un exemple de ce que ma sortie doit être....
OriginalL'auteur Mayank Pathak | 2012-07-25
Vous devez vous connecter pour publier un commentaire.
Il serait plus facile de créer un nouveau dictionnaire basé sur le nouveau dictionnaire d'ignorer les éléments qui ont la même clé dans le vieux dictionnaire.
OriginalL'auteur Jeff Mercado
Remarque: Malgré votre question en disant: "j'ai besoin de comparer valeurs dans les deux dictionnaires" (l'emphase est mienne) votre exemple semble être de démontrer le bien-comparaison des clés de sorte que j'ai passé avec que les. Si c'est les valeurs que vous avez besoin de comparer les vous pourriez donner un exemple de ce que tu veux dire et s'ils sont facilement convertibles ou comparable...
Si vous êtes seulement de comparer les touches, puis vous pouvez simplement utiliser le
.Keys
propriété du dictionnaire qui retourne unIEnumerable<TKey>
que vous pouvez faire votre linq sur...par exemple:
Cela ne s'appuyer sur la touche du même type, mais cela va sans dire, si vous comparez. Bien sûr, il n'y a rien qui vous empêche de convertir leurs types en premier si vous ne wnat pour ce faire de différents types.
Aussi si vous voulais pour ensuite obtenir les valeurs dans un des dictionnaires que vous pourriez faire quelque chose comme:
Ou, vous savez, de faire toute autre linqy choses vous vous sentez comme. 🙂
OriginalL'auteur Chris
Essayez ceci pour obtenir la différence entre les deux: Si elles ont la propriété commune.
OriginalL'auteur Nalan Madheswaran
Si bien compris, essayer quelque chose comme cela
si vous avez un dictionnaire moething comme ce
Dictionary<int, Fooclass> FinalDict
Donc dans le Dictionnaire appelé FinalDict aura les clés et connexes Fooclass
Espère que cette aide
OldDic.Where(x=> !NewDic.ContainsKey(x.Key)).ToDictionary(x=>x.Key, x=>x.Value)
OriginalL'auteur huMpty duMpty