Reputation: 86967
I'm struggling to figure out how to retrieve the Value
part of an IGrouping
instance.
I have the following:
IList<IGrouping<string, PurchaseHistory> results = someList.GroupBy(x => x.UserName);
And I now wish to iterate through each collection and retrieve the purchase histories for that user (and check if some stuff exists in the collection of purchase histories).
Upvotes: 5
Views: 6125
Reputation:
Calling..
IList<IGrouping<string, PurchaseHistory> results = someList
.GroupBy(x => x.UserName);
.Select(result => (result.Key, result.Any(SomeStuffExists)));
With..
bool SomeStuffExists(PurchaseHistory item)
{
return ..
}
Yields tuples in the likes of..
Upvotes: 0
Reputation: 2866
This is the way if you want to iterate through all the items
foreach (IGrouping<int, YourClass> value in result)
{
foreach (YourClass obj in value)
{
//Some Code here
}
}
And this is the way if you want to search some thing by key
List<YourClass> obj1 = result.Where(a => a.Key
== 12).SingleOrDefault().Where(b=>b.objId.Equals(125)).ToList();
(Key is considered as 'int' in this case)
Upvotes: -2
Reputation: 45947
how about a nested loop?
IList<IGrouping<string, PurchaseHistory>> results = someList.GroupBy(x => x.UserName);
foreach (IGrouping<string, PurchaseHistory> group in results)
{
foreach (PurchaseHistory item in group)
{
CheckforStuff(item);
}
}
or one loop with linq statement
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);
}
Upvotes: 6