Un groupe de collecte et de retour d'un Dictionnaire
J'ai écrit une méthode qui prend une collection d'objets (articles prix - chaque élément dispose d'un montant et d'un code) et les groupes par code renvoie ensuite un IDictionary où la clé est le code de l'élément et la valeur est le groupe des éléments de code (l'Espoir qui fait sens!)
Voici la mise en œuvre de la méthode:
public IDictionary<string, IEnumerable<PriceDetail>> GetGroupedPriceDetails(IEnumerable<PriceDetail> priceDetails)
{
//create a dictionary to return
var groupedPriceDetails = new Dictionary<string, IEnumerable<PriceDetail>>();
//group the price details by code
var grouping = priceDetails.GroupBy(priceDetail => priceDetail.Code);
//foreach grouping, add the code as key and collection as value to the dictionary
foreach (var group in grouping)
{
groupedPriceDetails.Add(group.Key, group);
}
//return the collection
return groupedPriceDetails;
}
J'ai ensuite essayé de revoir cette utilisation ToDictionary comme suit:
//group the price details by code and return
return priceDetails.GroupBy(priceDetail => priceDetail.Code)
.ToDictionary(group => group.Key, group => group);
J'obtiens une erreur lorsque j'essaie de compiler qui dit que je ne peux pas convertir à partir d'un dictionnaire de string, IGrouping<string, PriceDetail>
dans un dictionnaire de string, IEnumerable<PriceDetail>
.
Quelqu'un peut me dire comment correctement refactoriser ma première tentative à cette méthode? Je sens qu'il y a une manière plus concise de l'écriture, mais ne peut pas le comprendre!
OriginalL'auteur james lewis | 2012-02-08
Vous devez vous connecter pour publier un commentaire.
Comment sur:
Si vous vous transformez en un dictionnaire juste pour la possibilité de rechercher un code et d'obtenir une collection, avec aucune intention de modifier le dictionnaire, ILookup est un meilleur match.
La prochaine dans le processus après que je l'ai retourné à partir de cette méthode consiste à parcourir la collection (donc, pour chaque groupe) et de la somme le montant de la collection de le prix les détails de ce groupe. Suis-je manqué quelque chose? Puis-je le faire à l'aide de ILookup à la place? Ou, maintenant que j'écris ceci, je pense que je doit retourner quelque chose qui a le code comme une clé et un montant qui est la somme de tout faire dans une méthode,... toutes les suggestions grandement apprécié!
OK cool, je n'avais aucune idée de ce que ILookup était en train de faire, j'avais donc lu et trouvé il s'étend IGrouping etc etc. Juste mis en œuvre le changement et a couru un test pour voir ce qui arrive et c'est exactement ce que je voulais. Merci!
OriginalL'auteur Jakub Konecki
Pouvez-vous pas faire:
OriginalL'auteur bobwah