LINQ GroupBy em vários campos do tipo ref; EqualityComparer personalizado
Então eu examinei cerca de 20 exemplos sobre isso em SO e em outros lugares, mas não encontrei um que cobre o que estou tentando fazer. Este -Posso especificar meu comparador de tipo explícito inline? - parece o que eu preciso, mas não vai longe o suficiente (ou eu não entendo como levar isso adiante).
Eu tenho uma lista de LoadData, o objeto LoadData tem campos de referência e tipos de valorPrecisa agrupar em uma mistura de campos ref e valor, projete a saída para um tipo anônimoPreciso (acho) fornecer um IEqualityComparer personalizado para especificar como comparar os campos GroupBy, mas eles são um 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; }
}
A melhor consulta do GroupBy que tenho até agora:
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);
Isso agrupa, mas ainda há duplicatas.
Como posso especificar um código personalizado para comparar os campos GroupBy? Por exemplo, os componentes podem ser comparados por Component.Code.