LINQ GroupBy na wielu polach ref-type; Custom EqualityComparer
Przejrzałem więc około 20 przykładów na temat SO i innych, ale nie znalazłem takiego, który obejmuje to, co próbuję zrobić. To -Czy mogę określić mój bezpośredni komparator typu inline? - wygląda jak to, czego potrzebuję, ale nie idzie wystarczająco daleko (lub nie rozumiem, jak dalej to robić).
Mam listę LoadData, obiekt LoadData ma pola zarówno typu referencyjnego, jak i wartościowegoKonieczne jest grupowanie na mieszance pól wartości i wartości, rzutowanie wyniku na typ anonimowyPotrzebuję (myślę), aby dostarczyć niestandardowy komponent IEqualityComparer, aby określić sposób porównywania pól GroupBy, ale są one typu anonimowego
private class LoadData
{
public PeriodEndDto PeriodEnd { get; set; }
public ComponentDto Component { get; set; }
public string GroupCode { get; set; }
public string PortfolioCode { get; set; }
}
Najlepsze zapytanie GroupBy, jakie do tej pory prowadziłem:
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);
Te grupy, ale nadal są duplikaty.
Jak mogę określić niestandardowy kod do porównywania pól GroupBy? Na przykład Komponenty mogą być porównywane przez Component.Code.