Problem z list w group by

0

Mam problem z LINQ a konkretnie group by.

Mam 3 klasy:

public class Model1
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Code { get; set; }
        public int Number { get; set; }
    }

    public class Model2
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Info> Info { get; set; }

    }

    public class Info
    {
        public string Codes { get; set; }
        public int Numbers { get; set; }
    }

Załóżmy, że moja lista Modeli1 wygląda tak:

var models = new List<Model1>()
            {
                new Model1 { Id = 1, Name = "Name1", Code = "001", Number = 1 },
                new Model1 { Id = 1, Name = "Name1", Code = "002", Number = 3 },
                new Model1 { Id = 1, Name = "Name1", Code = "003", Number = 4 },
                new Model1 { Id = 1, Name = "Name1", Code = "004", Number = 7 },
                new Model1 { Id = 2, Name = "Name2", Code = "001", Number = 1 },
                new Model1 { Id = 2, Name = "Name2", Code = "000", Number = 2 },
                new Model1 { Id = 2, Name = "Name2", Code = "004", Number = 11 },
                new Model1 { Id = 3, Name = "Name3", Code = "001", Number = 2 }
            };

W jaki sposób przekształcić moją listę do listy Modeli2, tak aby:
Id w Modelu1 => Id w Modelu2
Name w Modelu1 => Name w Modelu2
Code w Modelu1 => Lista Codes w Info w Modelu2
Numbers w Modelu1 => Lista Numbers w Info w Modelu2

Czyli chce miec wynik:
Liste Modeli2, ktory bedzie zawieral:
3 rekordy, grupowane po Id i Name (dla rekordu o Id np 1, Name zawsze jest stale czyli Name1),
Oraz liste Info odpowiednio wypelniona, czyli Id1 bedzie mial 4 obiekty Info w liscie itd.

Jak coś takiego zrobic, mysle ze bedzie trzeba uzyc group by, ale jak zrobic w selectcie tak zeby liste info uzupelniac? Bo z tym mam problem?

Pozdrawiam

1
var groupedList = models.GroupBy(p => new { p.Id, p.Name }, (key, group) => new Model2
            {
                Id = key.Id,
                Name = key.Name,
                Info=group.Select(s=> new Info { Codes=s.Code}).ToList()
                
            }).ToList();

1 użytkowników online, w tym zalogowanych: 0, gości: 1