2016-05-18 19 views
1

Ich versuche, zwei Listen bei der Kombination ihrer beiden Listen zu verbinden.Join Listen und Unterlisten zur gleichen Zeit

Twist: Eine der Listen kann leer sein (Count == 0).

Hier sind einige Klassen POCO zu zeigen, was ich versuche zu tun: genau ein paar Bilder

class Location 
{ 
    public string Name { get; set; } 
    public List<Item> Items { get; set; } 
} 

class Item 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

Im Folgenden sind die zeigen, was zu tun, ich versuche. Wie Sie sehen können, möchte ich die Listen kombinieren und sicherstellen, dass alles klar ist.

Hier ist der Code einrichten, so dass Sie mit ihm leicht spielen: http://pastebin.com/Pa4dfebd

enter image description here

enter image description here

enter image description here

Antwort

1

Die Name ist die Kennung des Standorts und der ID von die Item?

könnten Sie verwenden diese GroupBy Ansatz:

List<Location> joinedList = dbList.Concat(guiList) // put both into the same box 
    .GroupBy(l => l.Name) 
    .Select(locGrp => new Location 
    { 
     Name = locGrp.Key, 
     Items = locGrp 
      .SelectMany(l => l.Items) // select all items of this group 
      .GroupBy(i => i.Id)  // group by item-id 
      .Select(g => g.First()) // removes duplicates 
      .ToList()     // create list 
    }).ToList(); 
Verwandte Themen