2015-08-26 3 views
5

J'ai du mal à comprendre comment récupérer la partie Value d'une instance IGrouping.Comment puis-je renvoyer la valeur à partir d'une IGroupage .NET via une clé?

Je donne les résultats suivants:

IList<IGrouping<string, PurchaseHistory> results = someList.GroupBy(x => x.UserName); 

Et je voudrais maintenant parcourir chaque collection et récupérer les histoires d'achat pour cet utilisateur (et vérifier si des choses existe dans la collection des histoires d'achat).

Quelqu'un peut-il aider s'il vous plaît?

+2

Que diriez-vous en utilisant 'foreach' – Eser

+2

http://stackoverflow.com/questions/8521025/how-to-get-values-from-igrouping – germi

Répondre

4

que diriez-vous d'une boucle imbriquée?

IList<IGrouping<string, PurchaseHistory>> results = someList.GroupBy(x => x.UserName); 

foreach (IGrouping<string, PurchaseHistory> group in results) 
{ 
    foreach (PurchaseHistory item in group) 
    { 
     CheckforStuff(item); 
    } 
} 

ou une boucle avec déclaration LINQ

IList<IGrouping<string, PurchaseHistory>> results = someList.GroupBy(x => x.UserName); 
foreach (IGrouping<string, PurchaseHistory> group in results) 
{ 
    bool result = group.Any(item => item.PurchasedOn > someDate); 
} 
+0

Au lieu de faire une deuxième boucle - y a-t-il un moyen de vérifier s'il existe un PurchaseHistory qui a un ... i donno .. 'item.PurchasedOn> someDate'? –

+0

Hmm - J'ai essayé ça ... AH! J'ai essayé les résultats. Tout (...) .. ooops! c'est sur le 'group.Any (..)'. ta. je l'ai. –

-2

C'est ainsi que si vous voulez parcourir tous les articles

foreach (IGrouping<int, YourClass> value in result) 
{ 
    foreach (YourClass obj in value) 
    { 
     //Some Code here   
    } 
} 

Et c'est la façon si vous voulez rechercher quelque chose par clé

List<YourClass> obj1 = result.Where(a => a.Key 
== 12).SingleOrDefault().Where(b=>b.objId.Equals(125)).ToList(); 

(Key est considéré comme 'int' dans ce cas)

+5

Le résultat serait une énumération de booléens ... – Stephan