I ran into an issue today and I have been stumped for some time in trying to get the results I am searching for.

I currently have a class that resembles the following:

```
public class InstanceInformation
{
     public string PatientID {get; set;}
     public string StudyID {get; set;}
     public string SeriesID {get; set;}
     public string InstanceID {get; set;}
}

```

I have a `List<InstanceInformation>` and I am trying to use LINQ (or whatever other means to generate paths (**for a file-directory**) based on this list that resemble the following:

```
PatientID/StudyID/SeriesID/InstanceID

```

My issue is the data is currently unstructured as it comes in the previously mentioned form (List) and I need a way to group all of the data with the following constraints:

* **Group InstanceIDs by SeriesID**
* **Group SeriesIDs by StudyID**
* **Group StudyIDs by PatientID**

I currently have something that resembles this:

```
var groups = from instance in instances
             group instance by instance.PatientID into patientGroups
             from studyGroups in
                 (from instance in patientGroups
                   group instance by instance.StudyID)
                   from seriesGroup in
                       (from instance in studyGroups
                        group instance by instance.SeriesID)
                            from instanceGroup in
                                 (from instance in seriesGroup
                                  group instance by instance.InstanceID)
             group instanceGroup by patientGroups.Key;

```

which just groups all of my InstanceIDs by PatientID, and it's quite hard to cull through all of the data after this massive grouping to see if the areas in between (StudyID/SeriesID) are being lost. Any other methods of solving this issue would be more than welcome.

This is primarily just for **grouping the objects** - as I would need to then iterate through them (using a foreach)