LINQ GroupBy en múltiples campos de tipo de ref; EqualityComparer personalizado

Así que he revisado unos 20 ejemplos sobre esto en SO y en otros lugares, pero no he encontrado uno que cubra lo que estoy tratando de hacer. Esta -¿Puedo especificar mi comparador de tipos explícitos en línea? - se parece a lo que necesito, pero no va lo suficientemente lejos (o no entiendo cómo llevarlo más lejos).

Tengo una lista de LoadData, el objeto LoadData tiene campos de tipos de referencia y valorDebe agruparse en una combinación de campos de referencia y valor, proyectar la salida a un tipo anónimo

Necesito (creo) proporcionar un IEqualityComparer personalizado para especificar cómo comparar los campos GroupBy, pero son de tipo anónimo

private class LoadData
{
    public PeriodEndDto PeriodEnd { get; set; }
    public ComponentDto Component { get; set; }
    public string GroupCode { get; set; }
    public string PortfolioCode { get; set; }
}

La mejor consulta de GroupBy que he ido hasta ahora:

var distinctLoads = list.GroupBy(
    dl => new { PeriodEnd = dl.PeriodEnd, 
                Component = dl.Component, 
                GroupCode = dl.GroupCode },
    (key, data) => new {PeriodEnd = key.PeriodEnd, 
                Component = key.Component, 
                GroupCode = key.GroupCode, 
                PortfolioList = data.Select(d=>d.PortfolioCode)
                                    .Aggregate((g1, g2) => g1 + "," + g2)},
    null);

Este grupo, pero todavía hay duplicados.

¿Cómo puedo especificar un código personalizado para comparar los campos GroupBy? Por ejemplo, los Componentes podrían ser comparados por Component.Code.

Respuestas a la pregunta(2)

Su respuesta a la pregunta