Here is my query -

var data = Goaldata.GroupBy(c => c.GoalId).ToList(); 

This returns a Igrouping object and I want an Iqueryable object which I can directly query to get the data while in this case I have to loop through using a foreach() and then get the data. Is there another way to group by in LINQ which returns directly as a list of Iqueryable or a List as similar to what happens for order by in LINQ.

3 Answers

The easiest way is probably

var data = Goaldata.GroupBy(c => c.GoalId).SelectMany(c => c).ToList(); 

In the OO sense they aren't really grouped, but they are ordered with the groups together.

1

Whilst the accepted answer is correct, it seems to be unnecessarily complicated. Assuming GoalId is an int you can just use OrderBy:

var data = Goaldata.OrderBy(c => c.GoalId).ToList(); 
3

Or .GroupBy(c => c.GoalId).AsQueryable()...

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.