LINQ: agrupación basada en la propiedad en la sublista

Estoy tratando de usar LINQ para crear una lista agrupada de documentos basada en metadatos, que es una lista en el documento.

Abajo se ve la estructura de mi objeto:

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

Quiero agrupar los documentos en función de una etiqueta de metadatos que tenga un nombre: ID y agruparlos donde los valores de la propiedad ID sean los mismos.

Lo intenté así:

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

Esto da como resultado una lista de documentos individuales, pero no agrupados por ID.

También pensó en seleccionar una lista distinta de ID y luego recorrer la lista de documentos y encontrar documentos que coincidan con la ID. Parece una gran sobrecarga, porque para cada ID en la lista distinta, tengo que ir cada vez a la lista de metadatos y encontrar los documentos y tener que hacer verificaciones adicionales para los múltiples elementos encontrados, obtener la propiedad que necesito, etc.

¿Alguien tiene una buena idea sobre cómo hacer que esto funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta