LINQ: agrupamento baseado na propriedade na sublist

Estou tentando usar o LINQ para criar uma lista agrupada de documentos com base em metadados, que é uma lista no document

Abaixo é a aparência da minha estrutura de objeto:

List<Document>
         --> List<Metadata>
                      --> Metadata has a name and a value property.

Desejo agrupar os documentos com base em uma tag de metadados com um nome: ID e agrupá-los onde os valores da propriedade ID forem os mesmo

Tentei assim:

var x = response.Document
         .GroupBy(d => d.Metadata.Where(dc => dc.Name == DocProperty.ID)
         .Select(dc => dc.Value));

Isso resulta em uma lista de documentos únicos, mas não agrupados em I

Também pensei em selecionar uma lista distinta de IDs e, em seguida, percorrer a lista de documentos e encontrar documentos que correspondam à ID. Essa parece ser uma sobrecarga, porque para cada ID na lista distinta eu tenho que ir sempre à lista de metadados, encontrar os documentos e fazer verificações extras de vários itens encontrados, obter a propriedade de que preciso etc.

Alguém tem uma boa idéia de como fazer isso funcionar?

questionAnswers(1)

yourAnswerToTheQuestion