Вопрос о вложенном запросе LINQ

Сегодня я столкнулся с проблемой, и некоторое время я был в тупике, пытаясь получить результаты, которые ищу.

В настоящее время у меня есть класс, похожий на следующий:

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

У меня есть List , и я пытаюсь использовать LINQ (или любые другие средства для создания путей ( для каталога файлов ) на основе этого списка, которые напоминают следующее:

PatientID/StudyID/SeriesID/InstanceID

Моя проблема заключается в том, что данные в настоящее время неструктурированы, поскольку они представлены в ранее упомянутой форме (Список), и мне нужен способ сгруппировать все данные со следующими ограничениями:

  • Группировать идентификаторы экземпляров по SeriesID
  • Группировать SeriesIDs по StudyID
  • Группировать StudyID по PatientID

В настоящее время у меня есть что-то похожее на это:

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;

, который просто группирует все мои InstanceID по PatientID, и довольно сложно отсеять все данные после этой массивной группировки, чтобы увидеть если области между ними (StudyID / SeriesID) теряются. Мы будем приветствовать любые другие способы решения этой проблемы.

Это в первую очередь предназначено только для группировки объектов - поскольку мне нужно было бы затем перебирать их (используя foreach)

5
задан tereško 17 November 2013 в 17:28
поделиться