У меня есть объект <Repere>
, структура которого следующая:
class Repere
{
public string Name { get; set; }
public List<Operation> Operations { get; set; }
public int Quantite {get;set;}
...
}
Когда я хочу сгруппировать List<Repere>
по его имени, я всегда использую следующий метод группировки:
List<Repere> liste_rep_group = liste_rep.GroupBy(l => l.Name)
.Select(cl => new Repere
{
Quantite = cl.Sum(c => c.TotalQuantity),
TotalQuantity = cl.Sum(c => c.TotalQuantity),
ID = -1,
IdAff = cl.First().IdAff,
Name = cl.First().Name,
NameOri = cl.First().Name,
Nom_aff = cl.First().Nom_aff,
Profil = cl.First().Profil,
Longueur = cl.First().Longueur,
Hauteur = cl.First().Hauteur,
Largeur = cl.First().Largeur,
Poids = cl.First().Poids,
Priorite = cl.Min(c => c.Priorite),
Matiere = cl.First().Matiere,
Angle1 = cl.First().Angle1,
Angle2 = cl.First().Angle2,
AngleAile1 = cl.First().AngleAile1,
AngleAile2 = cl.First().AngleAile2,
GroupeProfil = cl.First().GroupeProfil,
ListOperations = (cl.SelectMany(g=>g.ListOperations).GroupBy(o=>o.ID)
.Select(go => new Operation
{
ID = go.First().ID,
QtyFinished = go.Sum(o => o.QtyFinished),
Color=go.First().Color,
})).ToList()
...
}).ToList();
То, что я хотел бы сделать, это добавить в свой класс. Повторить метод, подобный
public List<Repere> GroupByName(List<Repere>)
{
//My grouping method
}
Так что каждый раз, когда мне нужно сгруппировать свою List<Repere>
, мне не нужно копировать всю функциювезде. Основная причина в том, что когда я изменяю структуру Repere, мне нужно редактировать функцию, и есть риск забыть обновить ее где-нибудь.