2015-08-26 7 views
5

Non riesco a capire come recuperare la parte Value di un'istanza IGrouping.Come posso restituire il valore da un IGrouping .NET tramite una chiave?

Ho il seguente:

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

Ed ora desidero scorrere ogni collezione e recuperare le storie di acquisto per l'utente (e verificare se alcune cose esiste nella raccolta di storie di acquisto).

Qualcuno può aiutare per favore?

+2

Come utilizzare 'foreach' – Eser

+2

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

risposta

4

come su un ciclo annidato?

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

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

o un loop con la dichiarazione 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

Invece di fare un secondo ciclo - c'è un modo per verificare se esiste una PurchaseHistory che ha ... io donno .. 'item.PurchasedOn> someDate'? –

+0

Hmm - ho provato quello ... AH! ho provato i risultati. Qualsiasi (...) .. ooops! è sul 'gruppo.Qualsiasi (..)'. ta. fatto. –

-2

Questo è il modo in cui se si vuole scorrere tutti gli elementi

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

E questo è il modo in cui, se si desidera effettuare la ricerca qualcosa via chiave

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

(la chiave è considerata come "int" in questo caso)

+5

Il risultato sarebbe un'enumerazione di booleani ... – Stephan