Ive got ths really annoying issue I have grouped a set of data and I cant get to the data within the group. I can get to the key bit not the data..
I have a load of data that is in the form
Data.Period = x Data.Adjustment = y I perform a GroupBy
var groupedData = Data.GroupBy(x => x.Period new {x.Period}); This brings back (according to linq) my hierarchical data which is starting to look how I want it. Id like to iterate through the contents but cant...How do I do this? and how do I...
Work how to get to the Data.Adjustment without using a projection. And I dont want to project yet because I have to perform another grouping....help! :-)
The IGrouping<TKey, TElement> interface inherits IEnumerable<TElement>:
foreach (var group in groupedData) { var groupKey = group.Key; foreach (var groupedItem in group) DoSomethingWith(groupKey, groupedItem); } I note that you will be better off using this for your query, however:
var groupedData = Data.GroupBy(x => x.Period); rather than this:
var groupedData = Data.GroupBy(x => new {x.Period}); If, for example, you wanted to average the adjustments, you could do this:
foreach (var group in groupedData) Console.WriteLine("Period: {0}; average adjustment: {1}", group.Key, group.Average(i => i.Adjustment));
Each element of a sequence of IGrouping<TKey, TElement> is an IEnumerable<TElement> that you can iterate over to get the data that has a common TKey:
var groups = Data.GroupBy(x => x.Period); foreach(var group in groups) { Console.WriteLine("Period: {0}", group.Key); foreach(var item in group) { Console.WriteLine("Adjustment: {0}", item.Adjustment); } } So in the above, groups is an IEnumerable<IGrouping<TPeriod, TAdjustment>> where TPeriod is the type of Period (you didn't tell us) and TAdjustment is the type of Adjustment. Then, group is an object that implements IEnumerable<TAdjustment> (but it also has a Key property so that you can get the key. Finally, item is a TAdjustment, and for each group, all the item that come from iterating over that group have the same key.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With