LINQ GroupBy для нескольких полей типа ref; Custom EqualityComparer
Так что я'мы просмотрели около 20 примеров по этому вопросу на SO и в других местах, но покане нашел тот, который охватывает то, что яЯ пытаюсь сделать. Это -Могу ли я указать свой явный компаратор типа inline? - выглядит как то, что мне нужно, но ненедостаточно далеко (или я нене понимаю, как это сделать дальше).
У меня есть список LoadData, объект LoadData имеет поля как ссылочных, так и типов значенийНужно сгруппировать по совокупности полей ref и value, спроецировать вывод на анонимный типНужно (я думаю) предоставить собственный IEqualityComparer, чтобы указать, как сравнивать поля GroupBy, но они являются анонимным типом
private class LoadData
{
public PeriodEndDto PeriodEnd { get; set; }
public ComponentDto Component { get; set; }
public string GroupCode { get; set; }
public string PortfolioCode { get; set; }
}
Лучший запрос GroupBy, который я получил до сих пор:
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);
Это группы, но есть еще дубликаты.
Как указать пользовательский код для сравнения полей GroupBy? Например, Компоненты можно сравнить с помощью Component.Code.