2010-10-28 17 views
1

Je discutais avec un collègue pour savoir s'il valait mieux utiliser un dictionnaire et le repeupler chaque fois qu'un jeu de résultats change ou simplement utiliser la boucle linq sur tous les éléments de la liste temps.raison de ne pas utiliser un dictionnaire

Nous essayons de mapper une relation parent/enfant et j'ai suggéré d'utiliser ParentID comme clé de dictionnaire et la valeur de dictionnaire comme objet personnalisé.

Nous aurons généralement besoin de parcourir tous les parents/enfants et de parcourir la liste.

Y at-il une raison pour laquelle vous ne voudriez pas utiliser un dictionnaire dans cette circonstance? Si oui, que voulez-vous utiliser à la place

+0

Une base de données peut-être? –

+1

Code à la fois et le profil pour voir qui gagne. Il est vraiment difficile de déterminer ce qui est une bonne recommandation sans beaucoup plus d'informations sur le scénario exact. Par exemple: quelle est la taille de votre charge commune, quelle charge avez-vous besoin de supporter (futur-proofing), quel code est plus simple (votre description laisse beaucoup à désirer - le vrai code aiderait), est-ce un goulot d'étranglement? pour votre application, ou êtes-vous en train de tirer sur la brise, etc. –

Répondre

1

Si vous avez vraiment besoin d'itérer sur l'ensemble de la collection à chaque fois, il n'y aurait pas beaucoup (voire aucun) avantage à avoir un Dictionary. D'autre part, si vous avez parfois besoin de localiser des instances spécifiques par leurs clés, Dictionary pourrait être ce dont vous avez besoin. Notez que même si vous utilisez un dictionnaire, vous pouvez tout simplement parcourir la liste des valeurs si nécessaire, pour ne pas peser trop de poids que d'itérer par le biais d'un List normal, mais vous aurez toujours le Capacités du dictionnaire, si nécessaire.

1

Performance sage, cela va vraiment dépendre de votre application spécifique, vous devrez donc tester.